1.继承(父类与子类)
概述:多个类中存在相同的属性和行为时,将这些内容抽取到单独一个类中, 那么多个类无需再定义这些属性和行为,只需要继承那个类即可
多个类可以称为子类,单独这个类称为父类或者超类,基类等。
子类可以直接访问父类中的非私有的属性和行为。
通过extends关键字让类与类之间产生继承关系。
2. super关键字
super可以理解为是只想自己父类的一个指针,而这个父类指的是离自己最近的一个父类。
super普通的直接引用与this类似,super相当于是只想当前对象的父类,这样就可以用super.xxx来引用父类的成员
举例:
public Male(String nickname, int gander, int age) {
super.setNickname(nickname); //接受到下面返回来的参数再传输给父类的属性
}
Male male = new Male("盈盈",1,4); //有参构造方法 返回参数
3.子类实例化其实是先实例化父类
通过代码举例验证 子类和父类同时输入无参构造方法
结果输出顺序是 :person01的无参构造
Male的无参构造
所以:子类实例化其实是先实例化父类
4.子类可以拥有自己独有的构造方法
5.方法重写
Override 重写
当父类方法满足不了子类的需求的时候,子类可以重写父类的方法 这种表现形式我们称之为方法的重写
6.向上转型
父类对象的引用指向了子类对象的实例化对象
举例:
Person01 male = new Male();
male.eat(); //此时调用的是male中重写后的eat
//并且eat换成male中独有的方法也是不可执行的
7.向下转型
和数据类型差不多 小转大自动转 大转小强制转
Person01 Person01 = new Male();
Male male = (Male) Person01;
Person01.eat();
male.eat();
你这个方法能不能调 你得看你真正的类型是谁
8.重载看参数的数据类型 重写new的对象
方法重载与方法重写的区别
在同一个类中,参数列表不同的同名方法我们称之为方法重载
父类的方法满足不了子类需求,子类重写父类的方法 我们称之为方法重写
方法重载在同一个类中而方法重写必须存在于父子继承关系
9.this 调用构造方法
this 在构造方法中调用其他构造方法只能放在第一行
注意 使用this调用构造方法的时候不能相互调用 避免造成死循环
10.super 调用父类构造方法
super(nickname,gender,age);
super调用父类的构造方法的时候 只能放在第一行
11.抽象方法与抽象类
使用abstract修饰没有方法提的方法 我们称之为抽象方法 具备抽象方法的类必须是抽象类
使用abstract修饰的类 我们称之为抽象类 抽象类不一定必须有抽象方法 但是抽象方法必须有抽象类
子类继承抽象类 第一种写法是重写抽象类中的抽象方法 子类继承抽象类 第二种写法是子类也是个抽象类
举例:public abstract class Person01 {
public abstract void eat();
}
12.final 修饰方法
使用final修饰的类不能被继承也不能被重写
final 意思上就是 最终的意思 被final修饰的类就是最终的类 所以不能被继承也不能被重写