2021年7月27日

讲师:王博

第一阶段第三周

Id10.8.159.18

今日内容

·继承

·子类父类的内存分析图

·super关键字

·重写

·重载

·抽象类

1继承

Java三大特性:封装,继承,多态

1.1生活中的继承

子承父业

龙生龙,凤生凤,老鼠生来会打洞

你很像你的父亲

游戏里面 大量的继承

1.2java中继承的语法格式

java使用关键字:extends进行继承的操作

继承至少得有两个类

格式:

Class B extends A{

}

B类继承了A类,A类是B类的唯一的父类,或者叫超类,基类

Java中是单继承(一个儿子只能有一个亲生父亲)

B类是A类的子类

B类继承了AA的东西(除了私有化的)都可以用。

讲课思路:

成员属性:

公开的成员属性

子类能继承父类公开的成员属性

私有的成员属性

子类不能继承父类私有的成员属性

成员方法

公开的成员方法

子类能继承父类公开的成员方法

私有的成员方法

子类不能继承父类私有的成员方法

构造方法:慎独

无参数的构造方法

子类继承了父类,会把子类的无参构造方法执行,并且也会执行父类的无参数构造方法,执行顺序:先执行父类的无参构造方法,在执行子类的无参构造方法

2子类父类的内存分析图

实例化子类的时候,先执行

3super关键字【鸡肋】

This调用当前对象的成员属性和成员方法

This调用构造方法

Super调用父类的成员属性和成员方法还有构造方

注:

·必须有继承关系,如果想使用super关键字

·super关键字必须写在子类里面。意思是让在子类中调用父类的一些东西

·super成员属性只能写在子类的定义方法中

·super.方法()只能写在子类定义的方法中

Super调用构造方法

This:调用当前类的成员属性和成员方法

Super:调用父类的成员属性和成员方法

格式:

Super();

注:

·一定要在子类的构造方法中调用父类的构造方法

·必须写在第一行

讲课思路

成员属性:

Super.blood=2000;只能写在子类定义的方法中

成员方法:

Super.haPi();只能在子类的方法中调用父类的东西

构造方法:

在子类的构造方法中调用父类的构造方法

4重写【override

子类通过继承可以使用父类的非私有化的成员方法,但是有的时候父类的方法需求不满足子类的需求,在不改变父类的方法需求下,可以对父类的方法进行重写

重写的条件:

·必须有继承关系

·父类的方法必须是公开的

·子类的方法必须和父类的方法一样(方法名,返回值,参数)

·必须在子类中重写

 

5重载【overload

重载的条件

1必须在同一个类中

2方法名必须一样,返回值必须一样,但是参数一定不一样

package com.liujinghe.class5;

class Person{
    //成员方法
    //run的这三个方法就是重载
    //方法名一样,返回值一样,参数不同
    public void run(){
        System.out.println("在跑步");
    }
    public void run(String name){
        System.out.println(name+"在跑步");
    }
    public void run(String name,int age){
        System.out.println(name+";"+age+";"+"在跑步");
    }
}
public class Demo1 {
    public static void main(String[] args) {
        Person person = new Person();
        person.run();
        person.run("老星");
        person.run("",45);
    }
}

6instanceof关键字(判断对象是否是这个类或者子类的对象)

java中二元运算符,左边是对象,右边是类,返回值是布尔类型,当左边的对象是右边的类或者子类所创建的对象的时候,返回true,否则返回false

语法格式

Person instanceof Object

package com.liujinghe.class6;

public class Demo {
    public static void main(String[] args) {
        /**
         * java中二元运算符,
         * 左边是对象,右边是类,返回值是布尔类型,
         * 当左边的对象是右边的类或者子类所创建的对象的时候,
         * 返回true,否则返回false
         */
        B b = new B();
        A a = new A();
        C c = new C();
        boolean result2 = c instanceof B;
        boolean result1=a instanceof A;
        boolean result = b instanceof A;
        System.out.println(result);
        System.out.println(result1);
        System.out.println(result2);
    }
}

7

需求:

宠物饿了,需要铲屎官给宠物喂食

  1. 不同的宠物吃的食物不一样
  2. 不同的宠物恢复后体力值不一样
  3. 铲屎官和狗玩接飞盘游戏,体力值下降10,但是会与铲屎官 的亲密度加5
  4. 铲屎官和猫玩滚毛球,体力值减少12,但是会与铲屎官的亲密度加7

8抽象类【abstract修饰的类】

 

8.1abstract关键字

·abstrace修饰成员方法叫抽象方法

·abstrace修饰类叫抽象类

注意事项

·abstrace修饰成员方法,但是这个方法没有方法体

·abstrace修饰的成员方法所在的类也必须加上abstrace修饰

·abstrace修饰的成员方法,没有方法体,没有实现的代码

·抽象类下面可以有非抽象方法

·抽象类下面可以没有抽象方法,但是叫抽象类

·抽象类不可以实例化

·抽象类能被继承,但是必须重写抽象方法

·一个类只能继承一个抽象类

有抽象方法的类一定是抽象类

抽象类不一定有抽象方法

 

作业

父类:葫芦

子类:七个子类

作业

1instanceof 关键字 百度扩展

2代码三次(必须的)

3作业

posted @ 2021-07-27 16:51  张三疯321  阅读(52)  评论(0编辑  收藏  举报