面向对象(类与对象)
1.1 类(Class)的概念(A)
类是对一组具有相同特征和行为的对象的抽象描述。
理解:
[1] 类包含了两个要素:特性和行为 => 同一类事物具有相同的特征和行为。
[2] 类是一个群体性概念。例如:网红、明星、草根、宅男、萝莉、沙雕
[3] 类可以理解为现实生活中所说的 “类型”
1.2 对象的概念(A)
对象是类的具体实现,表示一个独立的、唯一的个体。
理解
[1] 对象是通过类生成的。对象一定具备该类的特性和行为。
[2] 对象是个体。类是群体。=> 对象是独立的、唯一的。=> 属于同一类型的对象也是相互独立的。
1.3 类和对象的区别(B)
类是抽象的,是一个群体概念。对象是具体的,是一个独立个体。
一个独立的对象一定属于某个类。理解为类包含对象
1.4 属性和方法(A)
1.4.1 属性
类或者对象具有的特征在程序中称为属性(property/attribute)
具体对象的属性拥有的数据称为属性值。
属于同一类对象都具有相同的属性,但各个对象都拥有各自的属性值。这些属性值区分了不同的对象。
1.4.2 方法
类或者对象的行为称为方法(Method).
在java中
类是具有相同属性和方法的对象的集合。
对象是用来描述客观事物的一个实体,由一组属性和方法构成。
类是对象的类型。
1.5 定义类和对象(A)
定义类(类的组成)
-属性 field
-方法 method
-构造方法 construtor
-其他:代码块 静态代码块 内部类
创建对象
-类名 对象名=new 类名();
如:Person p1=new Person();
调用类的属性和方法
-对象名.成员变量
-对象名.成员方法
开发者可以根据需要自定义类,语法
[修饰符] class 类名{ 属性 方法 } |
案例:定义一个类,实例化对象
1 public class Student{ 2 3 4 5 // 声明类的属性 6 7 String sid; 8 9 String name; 10 11 int age; 12 13 char gender; 14 15 16 17 // 声明方法 18 19 public void learn(String cName){ 20 21 System.out.println(name+" learn "+cName); 22 23 } 24 25 }
1 public class Test01{ 2 3 public static void main(String[] args){ 4 5 6 7 // 通过Student类创建对象 8 9 /* 10 11 Student stu; 12 13 stu = new Student(); 14 15 */ 16 17 18 19 // stu是Student的一个对象,也是Student的一个实例 20 21 // new 操作就是实例化过程 22 23 Student stu = new Student(); 24 25 // 给属性赋值(.语法) 26 27 stu.name = "张三"; 28 29 stu.sid = "001"; 30 31 // 调用方法 32 33 stu.learn("java"); 34 35 36 37 Student stu2 = new Student(); 38 39 stu2.name = "李四"; 40 41 stu2.sid = "001"; 42 43 stu2.learn("c++"); 44 45 46 47 } 48 49 } 50 51
1.6 属性的声明
[修饰符] 属性类型属性名称 [=默认值] |
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。(数值:0,0.0 char:\u0000, boolean:false, 所有引用类型:null)
属性/成员变量的作用域范围是整个类体。
1.7 对象的内存图(B)
|
1.8 面向对象编程思维(A)
面向对象编程(oop),把一切都看出对象,通过类构造对象,java程序都是通过class类组织的。
所谓面向对象通过类构造对象,使用对象完成需求。
需求:用手机播放一首歌曲
1 public class Phone{ 2 3 4 5 String brand; 6 7 String type; 8 9 float price; 10 11 12 13 public void showInfo(){ 14 15 System.out.print("品牌:"+brand); 16 17 System.out.print(",型号:"+type); 18 19 System.out.println(",价格:"+price); 20 21 } 22 23 24 25 public void play(Music music){ 26 27 System.out.println("正在用"+brand+type+"播放<<"+music.name+">>歌曲"); 28 29 music.showInfo(); 30 31 } 32 33 }
1 public class Music{ 2 3 4 5 String name; 6 7 String actor; 8 9 int times; 10 11 String content; 12 13 14 15 16 17 public void showInfo(){ 18 19 System.out.println("-- "+name+" --"); 20 21 System.out.println("演唱者:"+actor); 22 23 24 25 int h = times / 3600; 26 27 int m = times % 3600 / 60; 28 29 int s = times % 60; 30 31 32 33 System.out.println("时长:"+h+":"+m+":"+s); 34 35 System.out.println(content); 36 37 } 38 39 }
1 public class Test01{ 2 3 public static void main(String[] args){ 4 5 6 7 Music music = new Music(); 8 9 music.name = "我的宣言"; 10 11 music.actor = "周柏豪"; 12 13 music.times = 356; 14 15 music.content = "偏不信万人面前跪不下"; 16 17 18 19 Phone phone = new Phone(); 20 21 phone.brand = "Apple"; 22 23 phone.type = "iPhone XR"; 24 25 phone.price = 5999.0f; 26 27 28 29 phone.play(music); 30 31 32 33 } 34 35 }
总结··
面向对象编程就是完成一个复杂的需求需要各个对象之间相互配合完成。对象的创建需要定义类型,java程序就是通过类来组织程序的。
java中一切都是对象。