类是对一组具有共同特征和行为的对象的抽象描述。
理解
[1]类是专门用于描述现实生活中的事物的。
[2]类描述的事物都具有共同的特征和行为。
[3]类就是我们通常所说的 “类型” ,描述的是一个群体性概念,对群体性概念是一个抽象描述。
案例: 高富帅、白富美、屌丝、沙雕
为什么要提出类的概念?
现实生活中,提出类的概念就是为了认知识别事物。
类可以快速生成对象,类是对象的抽象描述。
1.1 对象(Object)的概念
对象是类的一个具体实现,对象表示的是一个独立的,唯一的个体。
对象的特征:
[1] 独立的,唯一的 => 对象和对象之间是相互独立的,没有任何关系。即使是同一类型的对象。
[2] 对象承载的数据一定是不同的。
[3] 对象描述的是个体,对象是具体的。特指某一个具体的事物。
[4] 对象一定具有类所属的特性和行为。
1.2 属性
在程序中,类或者对象的特征称为属性。属性用于的数据叫做属性值。例如:对象小明拥有姓名属性,小明就是姓名的属性值。
1.3 方法
在程序,类或者对象的行为称为方法。
在程序中,类和对象的表述:
类是一组具有相同属性和方法的对象的抽象描述。
对象是一个具体的事物,具有一组属性和方法。
1.4 如何定义一个类?
创建类->创建对象->解决具体业务问题
语法
[修饰符] class 类名{ 属性 方法 } |
定义一个Student类
public class Student{ // 学生的特性(属性) String id; String name; int age; char gender; public void sayHi(){ System.out.println("我的姓名:"+name+",我的学号:"+id); } } |
总结:
[1]类的定义包含两部分成员,一个是属性、一个是方法。
属性因为定义的位置,也称为成员变量,本质上属性就是类的一个成员,方法也成员类的成员方法。
[2]属性的作用域是整个类型,所以方法中可以直接访问属性。
[3]在定义成员变量时可以对其初始化。如果不对其初始化,Java使用默认的值对其初始化。(数值:0,0.0 char:\u0000, boolean:false, 所有引用类型:null)
[4]属性定义格式:
[修饰符] 属性类型 属性名 [=默认值] |
在面向对象的语言中,整个程序的基本单位是类,通过类来组织程序。
所有的类声明的变量都是引用数据类型,引用数据类型必须通过new申请空间。
1.5 创建对象的过程
创建一个对象分为两个步骤:先声明对象,然后申请内存空间。
// 【1】声明s1的变量,s1是一个Student类型的对象 // s1是Student的其中一个实例 // Student s1 = null; // 【2】给s1申请内存空间(实例化的过程) //s1 = new Student(); |
通过.来访问对象的成员(属性和方法),通过实例结合.可以访问属性/成员变量,所有属性/成员变量也称为实例变量。
public class Test01{ public static void main(String[] args){ Student s1 = new Student(); //s1.name = "二狗"; //s1.id = "001"; //s1.age = 20; s1.sayHi(); //System.out.println(s1); Student s2 = new Student(); //s2.name = "三狗"; //s2.id = "001"; //s2.age = 20; s2.sayHi(); //System.out.println(s2); } } |
对象内存图
1.6 如何利用面向对象思维思考问题?
需求:用手机播放Mp3—最炫名族风?
public class Phone{ String brand; String type; float price; String color; public void start(){ System.out.println(brand+":"+type+" start..."); } public void stop(){ System.out.println(brand+":"+type+" stop..."); } public void play(Music music){ System.out.println(brand+":"+type+" play:"+music.name); System.out.println(music.singer); music.friendlyTime(); System.out.println(music.content); } } |
public class Music{ String name; String category; String content; String singer; int time; // 单位是秒 public void friendlyTime(){ int h,m,s; h = time / 3600; m = time % 3600 / 60; s = time % 60; System.out.println("时长:" + ((h>0) ? (h+":"):"") +m+":"+s); } } |
public class Test03{ public static void main(String[] args){ Phone phone = new Phone(); phone.brand = "Apple"; phone.type = "iPhone x"; phone.price = 10000.0f; Music music = new Music(); music.name = "最炫名族风"; music.singer = "凤凰传奇"; music.time = 151; music.content = "苍茫的天涯是我的爱\n苍茫的天涯是我的爱\n苍茫的天涯是我的爱"; phone.play(music); } } |