10-初学-super this 抽象类

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关键字图解

 

 

 下面为以上代码的图解

扫描二维码关注公众号,回复: 13161345 查看本文章

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:

猜你喜欢

转载自blog.csdn.net/shwjakak/article/details/120419191