继承
生活中的继承:子代继承长辈的精神或物质
代码中的继承:
多个类抽取其共同点形成的概念,该类就是这多个类的父类(基类,超类)
子类将拥有父类的所有属性与方法继承的优点:
1,节省代码
2,提高代码的可读性
3,提高代码的复用率
继承的特点:
1,子类将拥有父类的所有属性与方法,构造函数除外
2,一个类只能有直接一个父类
3,一个类没有写明继承关系,默认继承于Object继承的语法:
访问权限修饰符 class 子类名 extends 父类名{
}
super:
1,在子类构造函数中调用父类的构造函数,如果不写,默认调用父类无参构造函数,必须在子类构造函数的第一行
2,当子类属性与父类属性名一致时,区分是子类属性还是父类属性,加super是父类属性
3,当子类方法名与父类方法名一致时,调用父类方法,需要使用super调用
练习:
创建一个动物类(Anim),有属性年龄,性别
方法
睡觉
就地睡眠
创建一个狗类(Dog),使其继承与Anim类.特有属性,姓名,
特有方法
吃饭
吃狗粮
吃完就地睡眠
睡觉
在狗窝睡
创建一个猫类(Cat),使其继承与Anim类.特有属性,姓名
特有方法
吃饭
吃猫粮
吃完就地睡眠
睡觉
在沙发睡
创建一个鸟类(Bird),使其继承与Anim类
特有方法
吃饭
吃虫子
吃完在树上睡觉
睡觉
在树上睡
重写:
要求:
1,在继承关系中
2,子类重写父类方法,访问权限修饰符不可减小,返回值类型相同,方法名相同,形参列表相同
方法体不同
重载:
要求:
1,在同一个类中
2,方法名相同
3,形参列表必须不同
封装
作用:将东西进行包装
优点:
1,降低代码耦合度
2,保护内部
3,方便使用java任何一处都体现了封装性
int a = 10;
String s = "hello";
int[] nums = {11,2,3,4,5};
方法中封装这一段代码
类中方法,属性,构造函数
java文件中封装多个类
一个包中封装多个java文件
一个项目中封装多个包作用域:变量和方法的使用范围
访问权限修饰符:
作用:限定使用范围
值:
public 公共的 整个项目中
protected 受保护的 当前包中或继承关系中
默认的 默认的 当前包中
private 私有的 当前类中
类:
私有化属性
提供两个构造函数,一个无参,一个全参,使用public修饰
给所有属性提供get与set方法
重写toString方法(暂时没学,不写)
多态
意义:一个事物的多种展现形态
事的多态:重写与重载
物的多态:
子类对象转父类对象:没有风险自动转换
语法:父类名 对象名 = 子类对象;
父类对象转子类对象:有风险,需强转
语法:子类名 对象名 = (子类名)父类对象;
注意:子类对象转换为父类对象,调用重写后的方法,还是执行子类重写的方法instanceof:判断该对象是否属于该类
语法:对象名 instanceof 类名