面向对象
面向对象
1、类与对象概念
(1)Java中最基本的单位是类
成员变量:就是事物的属性(就是名词)
成员方法:就是事物的行为(就是动词)
(2)定义类就是定义类的成员
成员变量:和以前定义变量是一样的,但是位置变了,在类中,方法外
成员方法:和以前定义方法一样,去掉static
(3)概念
类:是一组相关的属性和行为的集合
对象:是该类事物的具体体现
举例:类 学生
对象 具体的某个学生就是一个对象
(4)特征
封装、继承、多态
2、学生类的定义
/** * 学生类 * 属性:姓名,年龄,性别 * 行为:学习,睡觉 */ class Student{ String name; //姓名 int age; //年龄 int sex; //性别 public void study(){ System.out.println("学习的方法"); } public void sleep(){ System.out.println("睡觉的方法"); } }
3、手机类的定义
/** * 手机类 * 属性:品牌(brand),价格(price) * 行为:打电话(call),发信息(sendMessage),玩游戏(playGame) */ class Phone{ String brand; int price; public void call(){ System.out.println("打电话"); } public void sendMessage(){ System.out.println("发信息"); } public void playGame(){ System.out.println("玩游戏"); } }
4、学生类的使用
(1)使用对象
创建对象并使用,格式:类名 对象名 = new 类名();
(2)使用成员变量
对象名.变量名
(3)使用成员方法
对象名.方法名(……)
public static void main(String[] args) { //创建对象格式:类名 对象名 = new 类名(); Student s = new Student(); //使用成员变量:对象名.变量名 s.name = "lc"; s.age = 22; s.sex = "女"; System.out.println(s.name+","+s.age+","+s.sex); //使用成员方法:对象名.方法名(……) s.study(); s.sleep(); } } class Student{ String name; //姓名 int age; //年龄 String sex; //性别 public void study(){ System.out.println("学习的方法"); } public void sleep(){ System.out.println("睡觉的方法"); } }
5、手机类的使用
public static void main(String[] args) { //创建对象格式:类名 对象名 = new 类名(); Phone p = new Phone(); //使用成员变量:对象名.变量名 p.brand = "vivoxplay5"; p.price = 2990; System.out.println(p.brand+","+p.price); //调用成员方法:对象名.方法名(……) p.call(); p.sendMessage(); p.playGame(); } } class Phone{ String brand; int price; public void call(){ System.out.println("打电话"); } public void sendMessage(){ System.out.println("发信息"); } public void playGame(){ System.out.println("玩游戏"); } }
6、成员变量和局部变量的区别
(1)在类中的位置不同
成员变量:在类中,方法外
局部变量:在方法定义中或者方法声明上
class Phone{ String brand; //成员变量 public void call(int x){ int a= 10; //x和a都是局部变量 } }
(2)在内存中的位置不同
成员变量:在堆内存中(成员变量属于对象,对象进堆内存)
局部变量:在栈内存中(局部变量属于方法,方法进栈内存)
(3)生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
(4)初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用
注意事项:
- 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
- 基本数据类型变量包括:byte,short,int,long,float,double,boolean,char
- 引用数据类型变量包括:数组,类,接口,枚举
7、方法的形式参数是类名时,调用的方法
public static void main(String[] args) { print(10); Student s = new Student(); //创建对象,并将对象的地址赋值给s print(s); } public static void print(int x){ //基本数据类型当做形式参数 System.out.println(x); } public static void print(Student stu){ //引用数据类型当做形式参数 stu.name = "lc"; stu.age = 22; stu.speak(); } } class Student{ String name; int age; public void speak(){ System.out.println(name+"..."+age); } }
8、匿名对象的概述和应用
(1)概述:没有名字的对象
public static void main(String[] args) { /*Car c1 = new Car(); m(c1);*/ m(new Car()); /*Car c2 = new Car(); m(c2); */ m(new Car()); //匿名对象可以当做参数传递 } //抽取方法提高代码的复用性 public static void m(Car cc){ cc.color = "red"; cc.num = 8; cc.run(); } } class Car{ String color; //颜色 int num; //轮胎数量 public void run(){ System.out.println(color+"..."+num); } }