一.继承
1.通过关键字extends来实现,等同有C#中的“ :”Subclass称为子类,而super称为父类,也称为基类,或超类如果使用了public,则只能在当前项目中可见,若无public修饰,则只能在当前包中可见,不可以使用private和protected修饰类。
2.子类重写父类的方法:
(1)父类(普通类)
方法(普通方法)
(2)子类 extends 父类
方法(普通方法——>和父类某个方法同名)
结论:
父类 父类对象=new 子类对象();
父类对象。方法名()(父子都有) 一定打印出子类方法体内容
2.1自己修改模板 template
2.2 super
super()父类的构造
super.父类的属性 或者方法。
3.抽象类和抽象方法的注意事项
案例:实现不同宠物 吃东西方法
public abstract class Pet{ public abstract void eat(); } public class Cat extends Pet{ @Override public void eat(){ syso("dog Eat"); } } public class Penguin extends Pet{ @Override public void eat(){ syso("Penguin Eat fish"); } } Pet[] pets=new Pet[2]; Cat cat=new Cat(); Penguin penguin=new Penguin(); pets[0]=cat; pets[1]=penguin;
注意:抽象方法和抽象类的注意事项
1.抽象类中也可以有抽象方法,也可以有非抽象方法
2.抽象方法中没有方法体,可以直接以分号结束
3.抽象方法必须在子类中重写,除非子类本身也是一个抽象类
4.如果用abstract修饰,那么该类是抽象类
5.抽象类不能被实例化
6.抽象类可以有构造
7.抽象类不能是静态的
8.抽象方法只能出现在抽象类中
9.抽象方法只是用来约束子类方法行为的
4.final修饰属性,方法,类
final修饰属性:不能再次赋值
final修饰方法: 方法不能被重写
final修饰类,类不能被继承
5.继承关系下子类构造的执行过程解析:
1.从Main---->子类构造不进入方法体
2.从子类构造------>父类构造
3.执行父类构造 ,创建了父类对象
4.回到子类构造,执行构造体
5.再回到Main。创建出对象