20220721 袁清清 学习笔记

java学习序列7

今日重点

  **继承**

  **super关键字**

  **方法的重写**

继承

类与类之间的关系

1.属性关系

2.参数关系

3.继承关系

继承——extends

继承核心是扩展父类功能

JAVA中继承只有单继承,只有一个直接父类,可以有多个间接父类,继承父类的属性,方法

创建构造器,实例化的过程,当一个类被实例化,先实例化他的父类,直接父类,然后是他自己

举例说明

点击查看代码
class Sum{
    Integer age;
    String name;
    public  void sum(){
    }

    public Sum(Integer age, String name) {
        this.age = age;
        this.name = name;
        System.out.println("sum");
    }
}
class Cat extends Sum{
    public  void eat(){

    }

    public Cat(Integer age, String name) {
        super(age, name);
        System.out.println("cat");
    }
}
class Person extends Cat{
    public Person(Integer age, String name) {
        super(age, name);
        System.out.println("person");
    }
}
class Mao extends Cat{
    public Mao(Integer age, String name) {
        super(age, name);
        System.out.println("mao");
    }
}

public class Test1 {
    public static void main(String[] args) {
//        Sum s=new Sum(1,"1");
//        s.age=0;
//        Cat c=new Cat(1,"1");
//        c.sum();
//        Person p=new Person(1,"1");
//        Mao m=new Mao(1,"1");
//        m.eat();
        Mao m=new Mao(1,"1");



    }
}

super关键字

代表调用父亲的结构(属性,方法,构造器)

当子类中使用super调用父类构造器时,super(age)必须在第一行或第一句话

在当前类中使用this调用本类的构造器时,this(name)必须是第一句话

在构造器中,如果需要使用super或this调用其他构造器,只能二选一, 而且必须在第一位

super指向的父类,不代表任何对象

this指向的本类,代表当前类的对象,方法的调用者

this可以代表对象,super不行

this和super区别

this调用当前类

super调用父类

this可以省略,super也可以省略(先在本类找,没有,去父类找)

this可以调本类构造器this(age),super调父类构造器

super调用父类构造器时,必须在第一行,和this冲突,2选1

this指向本类,代表对象;super指向父类,不能代表对象

方法的重写

方法的重写,我们可以利用到父类中方法已经运算后的结果,在结果的基础上进行

方法的重写,体现的就是继承的核心,就是为了扩展父类的功能

方法的重写的规则:前提是继承和被继承的关系

1.访问权限:重写的方法的权限不能低于被重写的权限,开发中一般都是等于

2.返回值类型:重写的方法的返回值可以和被重写的方法不同,但是必须是被

3.方法名:必须相同

4.参数列表:必须相同

5.抛出异常:重写的方法不能抛出比被重写的方法更大的异常

子类重写父类的方法

点击查看代码
class Sum{
    Integer age;
    String name;
    public Sum(Integer age, String name) {
        this.age = age;
        this.name = name;
        System.out.println("sum");
    }
    public  void sum(){
        System.out.println("sum+=");
    }
}
class Cat extends Sum{
    public Cat(Integer age, String name) {
        super(age, name);
        System.out.println("cat");
    }
    public  void eat(){
    }
    public  void sum(){
        super.sum();
        System.out.println("cat+=");
    }
}

今日总结

今天学习的知识点还是比较简单的,只是银行卡和借记卡的练习对我来说太难了,还得慢慢学

posted @ 2022-07-21 20:30  兜兜里藏着糖  阅读(31)  评论(1)    收藏  举报