面向对象
一,类(class)的概念
类是对一组具有相同特征和行为的对象的抽象描述。
理解:
[1] 类包含了两个要素:特性和行为 => 同一类事物具有相同的特征和行为。
[2] 类是一个群体性概念。例如:网红、明星、草根、宅男、萝莉、沙雕
[3] 类可以理解为现实生活中所说的 “类型”
为什么会有类的概念?
现实生活中为了更好的区分事物,把事物进行归类,进而更好的认识事物
二,对象的概念
对象是类的具体实现,表示一个独立的、唯一的个体。
理解:
[1] 对象是通过类生成的。对象一定具备该类的特性和行为。
[2] 对象是个体。类是群体。=> 对象是独立的、唯一的。=> 属于同一类型的对象也是相互独立的
三,类和对象的区别
类是抽象的,是一个群体概念。对象是具体的,是一个独立个体。
一个独立的对象一定属于某个类。理解为类包含对象
四,属性和方法
1,属性
类或者对象具有的特征在程序中称为属性(property/attribute)
具体对象的属性拥有的数据称为属性值。
属于同一类对象都具有相同的属性,但各个对象都拥有各自的属性值。这些属性值区分了不同的对象
2,方法
类或者对象的行为称为方法(Method)
在java中,类是具有相同属性和方法的对象的集合。
对象是用来描述客观事物的一个实体,由一组属性和方法构成。
类是对象的类型
五,定义类和对象
*开发者可以根据需要自定义类
语法:
[修饰符] class 类名{ 属性 方法 }
举例:定义一个学生类,实例化对象
public class Student{ // 声明类的属性 String sid; String name; int age; char gender; // 声明方法 public void learn(String cName){ System.out.println(name+" learn "+cName); } }
public class Test01{ public static void main(String[] args){ // 通过Student类创建对象 /* Student stu; stu = new Student(); */ // stu是Student的一个对象,也是Student的一个实例 // new 操作就是实例化过程 Student stu = new Student(); // 给属性赋值(.语法) stu.name = "张三"; stu.sid = "001"; // 调用方法 stu.learn("java"); Student stu2 = new Student(); stu2.name = "李四"; stu2.sid = "001"; stu2.learn("c++"); } }
六,对象的内存图
从上图可以了解到,stu和stu2,这两个对象是各自独立的,没啥关系;但相同点是它们的属性是相同的,也就是属于同一类
七,面向对象思维编程
面向对象编程(oop),把一切都看出对象,通过类构造对象,java程序都是通过class类组织的。
所谓面向对象通过类构造对象,使用对象完成需求。
例如:用手机播放一首歌曲
其中手机和音乐分别是一个类,所以我们分别声明出手机和音乐各自类中的属性
public class Phone{ String brand; String type; float price; public void showInfo(){ System.out.print("品牌:"+brand); System.out.print(",型号:"+type); System.out.println(",价格:"+price); } public void play(Music music){ System.out.println("正在用"+brand+type+"播放<<"+music.name+">>歌曲"); music.showInfo(); } }
public class Music{ String name; String actor; int times; String content; public void showInfo(){ System.out.println("-- "+name+" --"); System.out.println("演唱者:"+actor); int h = times / 3600; int m = times % 3600 / 60; int s = times % 60; System.out.println("时长:"+h+":"+m+":"+s); System.out.println(content); } }
再分别给他们赋值
public class Test01{ public static void main(String[] args){ Music music = new Music(); music.name = "向天再借五百年"; music.actor = "韩磊"; music.times = 356; music.content = "沿着江山起起伏伏温柔的曲线,\n放马爱的中原爱的北国和江南"; Phone phone = new Phone(); phone.brand = "Apple"; phone.type = "iPhone XR"; phone.price = 5999.0f; phone.play(music); } }
总结:
面向对象编程就是完成一个复杂的需求需要各个对象之间相互配合完成。对象的创建需要定义类型,java程序就是通过类来组织程序的。
java中一切都是对象
八,抽象的概念
根据业务中的对象抽象成计算机可识别的类,简单的说就是抽出各个对象像的部分。
抽象的步骤
[1] 发现类(归类)。类一般用名词。
[2] 发现类的属性(特征)。属性一般用名词。发现类的属性时,一般只放和业务相关的属性。
[3] 发现类的方法(行为)。方法一般是动词。只放和业务相关的方法。
例如抽象一个下载类。
[1] DownLoad类
[2] url/name/size/progress/type/location…
[3] start()/pause()/stop()/delete()…