1).super关键字的三种用法
同时这里思考this.的用法
2).this关键字的三种用法
super关键字是用来访问父类内容的 this关键字是用来访问子类内容的
package Demo09; import java.security.PublicKey; /* super关键字用来访问父类的内容 this关键字用来访问本类内容 this三种用法 1.在本类的成员方法中,访问本类的成员变量 2.在本类的成员方法中,访问本类中的另一个成员方法 3.在本类的构造方法中,访问本类中的另一个构造方法 3中注意 this(...)也必须是构造方法的第一个语句,唯一一个 注意super this两种构造调用不能同时使用 */ public class Zi extends Fu { int num = 20 ; public Zi(){ // super(); 因为this super 都是第一个 所以用了this就不赠送super了 this(123); //本类的无参构造调用本类的有参构造 //在本类的构造方法中,访问本类中的另一个构造方法 // this(12, 13); 报错 his(...)也必须是构造方法的第一个语句,唯一一个 } public Zi(int n){ this(10,20); } public Zi(int n , int m ){ //this(); 调无参的 构造方法Zi() 因为这里循环了所以报错 } public void method(){ int num = 10 ; System.out.println(num); //局部变量 System.out.println(this.num); //本类中的成员变量 System.out.println(super.num); //super访问父类中的成员变量 } public void methodA(){ System.out.println("aaa"); } public void methodB(){ this.methodA(); // 在[本类]的成员方法中,访问本类另一个成员方法 System.out.println("bbb"); } }
3).super 与 this关键字图解
下面为以上代码的图解
3).Java继承的三个特点
单继承
多级继承
一个子类的直接父类唯一但一个父类可以拥有多个子类
4).抽象的概念
如果父类当中的方法不确定如何进行()方法体实现,呢么这就是一个抽象方法!
5).抽象方法和抽象类的定义格式
抽象方法格式:就是加上abstract关键字,然后去掉大括号直接分号结束 抽象类:抽象方法所在的类,必须在抽象类才行 在class之前写上abstract即可 抽象类中能定义普通的成员方法 也能定义抽象方法 6).抽象方法和抽象类的使用 如何使用抽象类和抽象方法 1.不能直接创建抽象类对象,必须用一个子类来继承抽象父类 2.子类必须覆盖重写抽象父类中【所有】的抽象方法 用@Override来试一下 覆盖重写(实现):去掉抽象方法的abstract关键字,然后补上方法体大括号 3.创建子类对象使用.
父类
子类 不能直接创建抽象类对象,必须用一个子类来继承抽象父类
psvm : animal报错注意思考
6).抽象方法和抽象类的注意事项
1.抽象类不能直接创建对象 不能Animal animal = new animal(); 好比动物是一个抽象的不能单独存在 必须定义子类小猫小狗再在psvm中创建对象.
2.抽象类是可以有构造方法的是供子类创建对象时,初始化父类成员使用的。
3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类
4.抽象类的子类,必须重写父类中所有的抽象方法,否则编译无法通过会报错,除非该子类也是抽象类.
Fu类
子类
psvm
一个抽象类不一定有抽象方法 只要保证抽象方法所在类是抽象类即可 这样设有抽象方法的抽象类,也不能直接创建对象,在一些特殊场景下有用途
抽象类的子类,必须重写父类中所有的抽象方法,否则编译无法通过会报错,除非该子类也是抽象类. 如下:
或者:
最高类animal
次高 dog类 注意:这里吗没有全部覆盖重写Animal类的成员方法 因为加了abstract
因此也不能dog直接创建对象 Dog dog = new Dog();报错
次次高类
psvm: