1、对象和封装
1.1构造方法的作用
实例化对象并完成属性的初始化。系统会提供一个默认无参的构造方法。
public 类名(){
}
1.2什么是构造方法?
语法
访问修饰符 类名(参数列表){
//语句
}
特点:
1、方法名与类名相同
2、不能有返回值,不能用void
3、修饰符一般是public
1.3this关键字
this:指向当前对象,用于区分属性和形参
自定义构造方法时,系统不再提供默认无参的构造方法。
1.4方法重载的好处?
方法重载jvm会根据方法参数的个数和类型自动匹配相应的方法并执行。
1.5什么是方法重载呢?
1、方法名相同
2、参数不同(参数的个数或类型不同)
3、与修饰符和返回值无关
构造方法一种特殊的方法,也可以重载。
1.6什么是封装?
面向对象三大特征: 封装、继承和多态。
封装:实现信息的隐藏,数据的保护。
特点:不能直接访问,而是通过特定的方法。
1.7封装的好处?
隐藏实现细节,方便加入访问控制,方便修改维护。
1.8封装的实现
1、属性私有化private:修饰符,只能在当前类访问
2、创建公有的getter、setter访问器,用于对属性进行读写
3、加入访问控制语句
2、继承
1.1、为什么需要继承?
继承可以实现代码的重用性,方便修改代码,减少代码量。
生活中继承:龙生龙,凤生凤,老鼠生来会打洞。
1.2、如何实现继承?
编写父类,子类 extends继承父类
1.3继承的特点
单根性:一个类只允许有一个父类,不能多重继承
传递性:a–〉b,b–〉c=〉a-〉c,多级继承
1.4构造方法执行过程
子类构造方法会默认隐式调用父类的无参构造方法。
super();显示调用父类的无参构造方法。
super(name, health, love);//显示调用父类的有参构造方法
protected保护的,可以在子类中访问
作用域private<protected<public
1.5父类不能被继承的成员?
a)私有成员
b)构造方法
c)子类和父类不在同一个包中,使用默认修饰符的成员
1.6能不能继承?
Is a 是不是? 猫是不是哺乳动物?
实现继承:把子类共有的属性和行为提取到父类中。
1.7 为什么要重写?Override
当父类的方法不能满足子类需求时,可以定义同名的方法进行方法重写。
1.8 什么是方法重写?
a)方法名相同
b)参数相同(个数和类型必须一致)
c)返回值必须相同或是其子类
d)访问修饰符不能严于父类,假如父类是protected,子类可以是public或protected,不可以是private
1.9方法重载与方法重写
2.0为什么用抽象类?
当类实例化对象没有意义, 通常会限制类被实例化,考虑用抽象类。在class前面加abstract关键词,抽象类不能被实例化。
2.1 为什么需要抽象方法?
当抽象类中的方法在所有子类中都被重写的话,父类中的该方法有实现就没有意义。
考虑定义为抽象方法,只需在方法返回值前面加abstract关键词
2.2抽象方法的特点
a)不能有方法体
b)必须在抽象类中
c)必须在非抽象子类中实现
Object类是所有类根类,一个类没有定义继承的话,默认继承自Object
基类,父类,超类
3.多态
1.1为什么使用多态?
多态的好处:提高程序的可扩展性和易维护性。
1.2 什么是多态?
生活中多态的案例:打印机,水、水蒸气、冰h20,金刚石和石墨,C;
同一种物质在不同的条件下,拥有不同的状态。
程序中的多态:同一个父类对象引用不同的子类对象调用同一个方法却执行不同的结果。
1.3如何实现多态?
a)子类继承父类
b)子类重写父类
c)父类引用子类
父类 对象=new 子类对象();//向上转型,自动类型转换
1.4实现多态的两种形式
父类作为形参
父类作为返回值
1.5 为什么需要父类转换为子类?
当需要用父类对象去访问具体子类特有行为时,需要进行转换。
1.6向下转型(强制类型转换)
不安全?父类转换为子类不一定都能成功,必须转换为引用的真实子类类型。
编程思想-开闭原则:对修改关闭,对扩展开放
4、接口
1.1为什么用接口?
接口解决了类不能多重继承的问题。
1.2 什么是接口?
interface定义接口
1.3接口的特点
a)接口不能被实例化
b)非抽象实现类必须实现接口中的所有方法
c)实现类可以实现多个接口
d)接口中的变量都是静态常量
1.4如何使用接口?
编写接口
编写实现类
使用接口引用实现类[多态]
一般小接口(方法尽量少),不要定义大接口。