栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础复习——DAY4 (继承)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础复习——DAY4 (继承)

java基础复习day4

1.继承

1.1概念和格式1.2继承的利弊1.3继承中变量的访问特点1.4继承构造方法访问特点1.5继承中成员方法的访问特点1.6继承内存图1.7方法重写(1.5既视感)1.8继承注意事项

方法重写:继承:

1.继承 1.1概念和格式

概述:继承是面向对象三大特征之一。可以使子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。

格式:

public class 子类名 extends 父类名{..} 
1.2继承的利弊

提高复用性(多个类相同的成员可以放到同一个类中)和维护性(修改一处即可)类的耦合增强,削弱子类独立性什么时候能用?
存在关系 is a的时候:苹果是水果,猫是动物, 1.3继承中变量的访问特点

子类局部变量>子类成员变量>父类成员变量>没有报错就近原则?super(父类的引用)
1.4继承构造方法访问特点

子类中所有的构造方法的访问都会默认访问父类无参构造方法
原因:

子类会继承父类的数据,可能还会用到父类的数据。所以子类初始化前会先初始化父类每一个子类的默认构造方法的第一条语句默认都是:super()

如果父类没有无参构造方法,只有带参构造方法,怎么办?

子类构造方法第一句用super关键字去显示调用父类的带参构造方法父类写一个无参构造方法 (推荐) 1.5继承中成员方法的访问特点

通过子类访问一个方法和访问变量一样(就近原则)

子类成员范围找>父类成员范围>报错

1.6继承内存图

方法内的局部变量在栈内存中

卧槽花点时间看看

1.7方法重写(1.5既视感)

概述:

子类中出现和父类中一模一样的方法声明

应用:

当子类需要父类的功能,而功能主体子类有自己特有的内容,可以重写父类的方法,这样,沿袭父类的功能又定义子类的特有内容
eg:手机类 新手机类

写代码的时候用@override然后在下面写方法重写(一个注释,检查方法重写声明的正确性)

1.8继承注意事项 方法重写:

私有方法(privat)不能被重写(private 不能被继承)子类方法权限不能更低(public>默认>private) 继承:

java只支持单继承,不能继承多个可以支持多层继承

package teacher;

public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

package teacher;

public class Teacher extends Person {
    public Teacher() {
    }

    public Teacher(String name, int age) {

        super(name, age);
    }

    public void teach() {
        System.out.println("用爱教育每个学生!");
    }

}

package teacher;

public class PersonDemo {
    public static void main(String[] args) {
        Teacher t1 = new Teacher();
        t1.setName("文天圣");
        t1.setAge(20);
        System.out.print(t1.getName()+","+t1.getAge()+"岁,");
        t1.teach();//文天圣,20岁,用爱教育每个学生!

        Teacher t2 = new Teacher("陈彦池",100);
        System.out.print(t2.getName()+","+t2.getAge()+"岁,");
        t2.teach();//陈彦池,100岁,用爱教育每个学生!

    }
}

小结: 上述代码,teacher继承person,但是不能继承父类private的成员变量,所以需要用父类的方法进行赋值。

猫狗案例:

package catanddog;

public class Animal {
    private String name;
    private int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

package catanddog;

import groovyjarjarantlr4.v4.codegen.model.SrcOp;

public class Cat extends Animal {
    public Cat() {
    }

    public Cat(String name, int age) {
        super(name, age);
    }

    public void catchMouse() {
        System.out.println("猫抓老鼠");
    }
}

package catanddog;

public class Dog extends Animal {
    public Dog() {
    }

    public Dog(String name, int age) {
        super(name, age);
    }

    public void lookDoor() {
        System.out.println("狗看门");
    }
}

package catanddog;

public class AnimalDemo {
    public static void main(String[] args) {
        Cat c1 = new Cat();
        c1.setName("汤姆");
        c1.setAge(20);
        System.out.println(c1.getName() + "," + c1.getAge());
        c1.catchMouse();

        Cat c2 = new Cat("加菲", 30);
        System.out.println(c2.getName() + "," + c2.getAge());
        c2.catchMouse();


        Dog d1 = new Dog();//同理

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/755466.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号