封装,继承,Super和重写

java中只有单继承,没有多继承

package com.lol.LiOu.oop.Demo04;

//在java中,所有的类,都默认直接或者间接链接集成object
//preson  人
public class Person {

        
    //public 共有的
    //protected 受保护的
    //default   默认的
    //private 私有的
    public void  say() {
        System.out.println("说了一句话");
    }
    public int money = 10_0000_0000;

    }
//ctrl+h显示父子类关系

私有(private)的东西无法被继承

super注意点:

1.super调用父类的构造方法,必须在构造方法的第一个

2.super必须只能出现在子类的方法或者构造方法中!

3.super 和this不能同时调用构造方法!

VS

this:代表的对象不同:

this:本身调用者这个对象

super:代表父类对象的应用

前提:this:没有继承也可以使用

​ super:只能在继承条件才可以使用

构造方法:

this();本类的构造

super(); 父类的构造!

重写:需要有继承关系,子类重写父类的方法!

​ 1.方法名必须相同

​ 2.参数列表必须相同

​ 3.修饰符:范围可以扩大但不能缩小 public >protected>private

​ 4.抛出的异常:范围,可以被缩小但不能被扩大:ClassNotFoundException 不能--> Exception(大)

重写,子类的方法和父类必须一致,方法体不同

为什么要重写?

1.父类的功能子类不一定需要或者不一定满足!

Alt+Insert:override;

![屏幕截图 2020-12-12 152256](C:\Users\LOL\Desktop\屏幕截图 2020-12-12 152256.png)![屏幕截图 2020-12-12 152424](C:\Users\LOL\Desktop\屏幕截图 2020-12-12 152424.png)![屏幕截图 2020-12-12 200609](C:\Users\LOL\Desktop\屏幕截图 2020-12-12 200609.png)

调用方法

package com.lol.LiOu.oop;

import com.lol.LiOu.oop.Demo04.A;
import com.lol.LiOu.oop.Demo04.B;

public class App {
    //静态方法和非静态方法区别很大
    public static void main(String[] args) {

    //费静态:重写
    A a = new A();
    a.test();

    //父类的引用指向了子类
        B b = new A();//子类重写了父类的方法
        b.test();
    }
}

子类

package com.lol.LiOu.oop.Demo04;

public class A extends B{

    //Override重写
    @Override//注释
    public void test() {
        System.out.println("A=>test()");
    }
}

父类

package com.lol.LiOu.oop.Demo04;

//重写都是方法的重写,与属性无关
public class B {
    public  void test(){
        System.out.println("B=>test()");
    }

}
posted @ 2020-12-12 20:13  JAVA初当力  阅读(60)  评论(0编辑  收藏  举报