继承20210804

本文介绍了Java中的继承概念,包括其好处和弊端。通过实例展示了super关键字的使用,以及构造方法和成员方法在继承中的访问特点。讨论了方法重写及其注意事项,并提供了老师和学生、猫和狗的案例来说明继承的实际应用。文章强调了继承在提高代码复用性和组织结构上的作用。
摘要由CSDN通过智能技术生成

1.继承

1.1 继承概述

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

 

 1.2 继承的好处和弊端

1.3 继承中变量的访问特点 

1.4 super

 super 关键字的用法和 this 关键字的用法相似

this:代表本来对象引用

super:代表父类存储空间的表示(可以理解为父类对象引用)

1.5 继承中构造方法的访问特点 

 1.6 继承中成员方法的访问特点

1.7super内存图 

 1.8方法重写

 手机类

package com.it_06;
/*
    手机类
 */
public class Phone {
    public void call(String name){
        System.out.println("给"+name+"打电话");
    }
}

 新手机类继承了手机类

/*
    新手机
 */
public class NewPhone extends Phone {
   /* public void call(String name){
        System.out.println("开启视频功能");
//        System.out.println("给"+name+"打电话");
        super.call(name);
    }*/
   @Override
    public void call(String name){
       System.out.println("开启视频功能");
       super.call(name);
   }

}

测试类

/*
    测试类
 */
public class PhoneDemo {
    public static void main(String[] args) {
        Phone p = new Phone();
        p.call("钢铁侠");
        System.out.println("--------------");

        NewPhone np = new NewPhone();
        np.call("成龙");
    }
}

 

 1.9 方法重写注意事项

 1.10 Java中继承的注意事项

案例 老师和学生 

 ①②③

 老师类

/*
    老师类
 */
public class Teacher {
    private String name;
    private int age;

    public Teacher() {
    }

    public Teacher(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;
    }

    public void teach(){
        System.out.println("用爱成就每一位学员");
    }
}

 学生类

/*
    学生类
 */
public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(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;
    }

    public void study(){
        System.out.println("好好学习 天天向上");
    }
}

 测试类

/*
    测试类
 */
public class Demo {
    public static void main(String[] args) {
        //创建老师类对象进行测试
        //无参
        Teacher t1 = new Teacher();
        t1.setName("郭靖");
        t1.setAge(48);
        System.out.println(t1.getName() + "," + t1.getAge());
        t1.teach();
        System.out.println("------------");
        //带参
        Teacher t2 = new Teacher("小龙女", 55);
        System.out.println(t2.getName() + "," + t2.getAge());
        t2.teach();

        System.out.println("------------");
        //创建学生类对象进行测试
        //无参
        Student s1 = new Student();
        s1.setName("杨过");
        s1.setAge(30);
        System.out.println(s1.getName()+","+s1.getAge());
        s1.study();
        System.out.println("------------");
        //带参
        Student s2 = new Student("杨过",30);
        System.out.println(s2.getName()+","+s2.getAge());
        s2.study();

    }
}

④⑤⑥⑦

父类


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;
    }
}

 老师类继承父类


public class Teacher extends Person {

    public Teacher() {
        super();
    }

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

    public void teach(){
        System.out.println("教书");
    }
}

学生类继承父类


public class Student extends Person {

    public Student() {
    }

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

    public void study(){
        System.out.println("学习");
    }
}

测试类

/*
    测试类
 */
public class PersonDemo {
    public static void main(String[] args) {
        //创建老师对象并测试
        //无参
        Teacher t1 = new Teacher();
        t1.setName("张三丰");
        t1.setAge(60);
        System.out.println(t1.getName()+","+t1.getAge());
        t1.teach();

        System.out.println("---------------");
        //带参

        Teacher t2 = new Teacher("李老师",38);
        System.out.println(t2.getName()+","+t2.getAge());
        t2.teach();

        System.out.println("---------------");

        //创建学生对象并测试
        //无参
        Student s1 = new Student();
        s1.setName("小明");
        s1.setAge(10);
        System.out.println(s1.getName()+","+s1.getAge());
        s1.study();

        System.out.println("---------------");
        //带参
        Student s2 = new Student("小红",9);
        System.out.println(s2.getName()+","+s2.getAge());
        s2.study();

    }
}

案例 猫和狗

 

 

/*
    动物类
 */
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;
    }

/*
    猫类继承动物类
 */
public class Cat extends Animal {
    public Cat() {
    }

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

    public void catchMouse(){
        System.out.println("猫抓老鼠");
    }
}
/*
    狗类继承动物类
 */
public class Dog extends Animal {
    public Dog() {
    }

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

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

/*
    测试类
 */
public class AnimalDemo {
    public static void main(String[] args) {
        //创建猫类对象并测试
        Cat c1 = new Cat();
        c1.setName("加菲猫");
        c1.setAge(5);
        System.out.println(c1.getName() + "," + c1.getAge());
        c1.catchMouse();
        System.out.println("--------------");

        Cat c2 = new Cat("汤姆", 6);
        System.out.println(c2.getName() + "," + c2.getAge());
        c2.catchMouse();

        System.out.println("--------------");
        //创建狗类对象并测试
        Dog d1 = new Dog();
        d1.setName("哈士奇");
        d1.setAge(5);
        System.out.println(d1.getName()+","+d1.getAge());
        d1.lookDoor();

        System.out.println("----------------");
        Dog d2 = new Dog("柯基",5);
        System.out.println(d2.getName()+","+d2.getAge());
        d2.lookDoor();
    }
}

由于个人原因近期没有发布,又拖延时间了  

额 反正也没人看 

自己给自己加油吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值