JAVA学习笔记关于——继承&&多态&&抽象

今日份鼓励:在这个并非尽善尽美的世界上,勤奋会得到报偿,而游手好闲则要受到惩罚 --毛姆

目录

一、继承

1.继承的使用   ——关键字extends

2.在使用成员变量的细节

 3.子类与父类的构造方法

4.组合 

二、多态

1.向上转型——让父类引用指向子类的引用

2.方法重写——方法的返回值,方法名,方法的参数都相同

3.多态——动态绑定(运行时绑定),在编译后发生改变

三、抽象


一、继承

注意:

1.JAVA中不支持一个类拥有多个父类

2.在JAVA中的继承不允许出现环路

3.final修饰的类不能被继承

4.类的权限修饰符只能时public与默认修饰符

继承的简单概述:就是对共性的抽取,从而达到了代码的复用

JAVA学习笔记关于——继承&&多态&&抽象_第1张图片

1.继承的使用   ——关键字extends

分析:  Duck是子类  Animal是父类

JAVA学习笔记关于——继承&&多态&&抽象_第2张图片

 一个简单的继承

        父类的代码:

class Animal{
    public String name;
    public int age;
    public double weight;

    public void eat(){
        System.out.println(this.name+"正在吃饭");
    }

    public void sleep(){
        System.out.println(this.name+"正在睡觉");
    }
}

        子类继承的代码:

class Duck extends Animal{


    public void run(){
        System.out.println(this.name+"会游泳");
    }

}

2.在使用成员变量的细节

        1.直接在子类中可以使用父类的成员变量 

JAVA学习笔记关于——继承&&多态&&抽象_第3张图片

        2.父类成员变量与子类变量重名——就近原则

                优先使用子类的成员变量 

JAVA学习笔记关于——继承&&多态&&抽象_第4张图片

        3.需要访问父类中的同名变量使用关键字——super

                在后面我会写一个关于this与super的博客  它不能在静态的方法中使用

JAVA学习笔记关于——继承&&多态&&抽象_第5张图片

  3.子类与父类的构造方法

        1.使用super()来使用父类的构造方法       

当构造子类的时候一定要先构造父类的构造方法,初始化,子类继承的父类成员,当我们不创建构造方法时,编译器会自动生成。

当使用super()来调用父类的构造方法时我们要把它方在第一行,不能在静态方法中使用,不能与this()同时存在。

JAVA学习笔记关于——继承&&多态&&抽象_第6张图片

 2.子类与父类中的静态代码块与实例代码块

        1.先执行静态的代码块

        2.父类的实例代码块

        3.父类的构造方法

        2.子类的实例代码块

        3.子类的构造方法

JAVA学习笔记关于——继承&&多态&&抽象_第7张图片

4.组合 

        举个例子:一个学校里由多个老师与学生组成 

JAVA学习笔记关于——继承&&多态&&抽象_第8张图片

二、多态

        多态的简单概述:一种事物的多种形态

举个例子:我和室友去吃饭

JAVA学习笔记关于——继承&&多态&&抽象_第9张图片

class Aniaml{
    public String name;
    public int age;

    public void eat(){
        System.out.println(this.name+"吃饭");
    }
}
class Cat extends Aniaml{

    public void eat(){
        System.out.println(this.name+"吃猫粮");
    }
}
class Dog extends Aniaml{

    public void eat(){
        System.out.println(this.name+"吃狗粮");
    }
}
public class TestDeom {

    public static void main(String[] args) {

            Aniaml aniaml1 = new Cat();
            aniaml1.name = "咪咪";
            aniaml1.eat();

    }

}

1.向上转型——让父类引用指向子类的引用

         三种常见的向上转型:

        1.直接赋值

public class TestDeom {

    public static void main(String[] args) {

            Aniaml aniaml1 = new Cat();
            aniaml1.name = "咪咪";
            aniaml1.eat();
    }
}

        2.方法的参数

JAVA学习笔记关于——继承&&多态&&抽象_第10张图片

        3.方法的返回值

JAVA学习笔记关于——继承&&多态&&抽象_第11张图片

2.方法重写——方法的返回值,方法名,方法的参数都相同

上述的eat()方法就发生了重写

父类的eat()方法

JAVA学习笔记关于——继承&&多态&&抽象_第12张图片

 子类的eat()方法

JAVA学习笔记关于——继承&&多态&&抽象_第13张图片

3.多态——动态绑定(运行时绑定),在编译后发生改变

        1.实现条件

                必须在继承的体系下

                子类必须对父类的方法进行重写

                通过父类的引用调用重写的方法

2.举个例子:当我们传入的对象不同时,我们调用的方法不同 

JAVA学习笔记关于——继承&&多态&&抽象_第14张图片

 

三、抽象(在后续过程中我会重新补充)

        抽象的简单概述:

1.

2.

你可能感兴趣的:(Java学习,java)