1.类的概念
在生活中,说到类,可以联想到类别,同类,会想到一类人,一类事物等等。而这一类人或事物都是具有相同特征或特点和行为的,我们根据不同的特征或特点和行为将他们归类或分类。同时,当我们认识一个新事物的时候,我们一般来说是从过往的事物中总结事物的特点(特征),并比对新事物,把新事物进行归类,以达到认识新事物。
在Java程序中,类是对一组具有相同特征和行为的对象的抽象描述。可以看出和生活中对类的定义很像。但是在Java程序中,我们将其相同的特征称为属性,行为则称为方法。
理解:
[1] 类包含了两个要素:特性和行为 => 同一类事物具有相同的特征和行为。
[2] 类是一个群体性概念。例如:网红、明星、草根、宅男、萝莉
[3] 类可以理解为现实生活中所说的 “类型”
引入类的作用:在程序中,引入类的概念,就是为了快速生成更多的具有相同特性和行为的事物。
2.对象的概念
对象是类的具体实现,表示一个独立的、唯一的个体。
理解
[1] 对象是通过类生成的。对象一定具备该类的特性和行为。
[2] 对象是个体。类是群体。=> 对象是独立的、唯一的。=> 属于同一类型的对象也是相互独立的。
3.类和对象的区别
类是抽象的,是一个群体概念。对象是具体的,是一个独立个体。
一个独立的对象一定属于某个类。理解为类包含对象
4.属性和方法
4.1属性
类或者对象具有的特征在程序中称为属性(property/attribute)
具体对象的属性拥有的数据称为属性值。
属于同一类对象都具有相同的属性,但各个对象都拥有各自的属性值。这些属性值区分了不同的对象。
4.2方法
类或者对象的行为称为方法(Method),可以理解为:一个对象在类中可以做很多东西,能做什么在类里面就叫做方法。
例如:定义一个猫类,猫类中有一个对象加菲猫,加菲猫可以做很多事情如:吃,喝,睡觉,这些在类中称为方法。
5.定义类和方法
开发者可以根据需要自定义类,语法
[修饰符] class 类名{ 属性 方法 }
案例:定义一个类,实例化对象
1 public class SuperHero{ 2 //声明类的属性 3 String name; 4 int age; 5 char gender; 6 String skill; 7 //声明类的方法 8 9 public void hit(String kname){ 10 System.out.println("我"+name +kname+"打灭霸"); 11 } 12 13 public void showInfo(){ 14 System.out.println("年龄"+age); 15 System.out.println("性别"+gender); 16 System.out.println(skill); 17 System.out.println("我!"+name+"打钱!"); 18 } 19 }
1 public class Test01{ 2 public static void main(String[] args){ 3 SuperHero thor = new SuperHero();//创建对象,实例化过程 4 //给属性赋值(.语法) 5 thor.name = "雷神"; 6 thor.gender = '男'; 7 thor.skill = "飞,放电"; 8 //调用方法 9 thor.hit("用个锤子"); 10 thor.showInfo(); 11 12 13 System.out.println(); 14 SuperHero amercaMan =new SuperHero(); 15 //给属性赋值(.语法) 16 //amercaMan.name = "美国队长"; 17 //amercaMan.gender = '男'; 18 //amercaMan.skill = "盘他 "; 19 //调用方法 20 amercaMan.hit("用个盘子"); 21 amercaMan.showInfo(); 22 } 23 }
5.1.局部变量和成员变量
局部变量:在方法或者语句块中声明的变量称为局部变量,语句块就是作用域。
局部变量在其所在的作用域有效,出了作用域就无效。
作用域可以嵌套,内部作用域可以访问外部作用域的变量。
1 public void learn(String cName){ 2 // 方法中定义的局部变量 3 System.out.println(name+" learn "+cName); 4 5 // 语句块中定义局部变量 6 { 7 int count = 10; 8 System.out.println(" count "+count); 9 System.out.println("cname"+cName); 10 } 11 12 // System.out.println(" count "+count); 13 }
成员变量:在方法外部,类的内部定义的变量称为类的成员变量,简称成员变量。有些地方把属性称为filed(字段)
成员变量必须通过类的实例/对象调用,例如 stu.name ,有时成员变量也称为实例变量。
成员变量 == 属性 == 字段 == 实例变量
类中包含两个成员:成员变量和成员方法。
5.2属性的声明
[修饰符] 属性类型 属性名称 [=默认值]
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。(数值:0,0.0 char:\u0000, boolean:false, 所有引用类型:null)
属性/成员变量的作用域范围是整个类体。
6.面向对象编程思维
面向对象编程(oop),把一切都看出对象,通过类构造对象,java程序都是通过class类组织的。
所谓面向对象通过类构造对象,使用对象完成需求。
需求:用手机播放一首歌曲
1 public class Phone{ 2 3 String brand; 4 String type; 5 float price; 6 7 public void showInfo(){ 8 System.out.print("品牌:"+brand); 9 System.out.print(",型号:"+type); 10 System.out.println(",价格:"+price); 11 } 12 13 public void play(Music music){ 14 System.out.println("正在用"+brand+type+"播放<<"+music.name+">>歌曲"); 15 music.showInfo(); 16 } 17 }
1 public class Music{ 2 3 String name; 4 String actor; 5 int times; 6 String content; 7 8 9 public void showInfo(){ 10 System.out.println("-- "+name+" --"); 11 System.out.println("演唱者:"+actor); 12 13 int h = times / 3600; 14 int m = times % 3600 / 60; 15 int s = times % 60; 16 17 System.out.println("时长:"+h+":"+m+":"+s); 18 System.out.println(content); 19 } 20 }
1 public class Test01{ 2 public static void main(String[] args){ 3 4 Music music = new Music(); 5 music.name = "向天再借五百年"; 6 music.actor = "韩磊"; 7 music.times = 356; 8 music.content = "沿着江山起起伏伏温柔的曲线,\n放马爱的中原爱的北国和江南"; 9 10 Phone phone = new Phone(); 11 phone.brand = "Apple"; 12 phone.type = "iPhone XR"; 13 phone.price = 5999.0f; 14 15 phone.play(music); 16 17 } 18 }
总结:
面向对象编程就是完成一个复杂的需求需要各个对象之间相互配合完成。对象的创建需要定义类型,java程序就是通过类来组织程序的。
java中一切都是对象。
7.抽象
7.1抽象的概念
根据业务中的对象抽象成计算机可识别的类,简单的说就是抽出各个对象像的部分。
抽象的步骤
[1] 发现类(归类)。类一般用名词。
[2] 发现类的属性(特征)。属性一般用名词。发现类的属性时,一般只放和业务相关的属性。
[3] 发现类的方法(行为)。方法一般是动词。只放和业务相关的方法。
抽象一个下载类。
[1] DownLoad类
[2] url/name/size/progress/type/location…
[3] start()/pause()/stop()/delete()…
7.2类图
+ public / – private