[进阶]Java:继承:概述、案例。

Java中的继承允许一个类(子类)从另一个类(父类)继承属性和方法,提高代码复用性并增强功能扩展。子类可以使用父类的公共属性和方法,同时保留自己的独特行为。继承设计原则提倡将共享的属性和方法放在父类,而子类特有的属性和行为应保留在各自类中,以保持面向对象的逻辑清晰。
摘要由CSDN通过智能技术生成

什么是继承?

  • Java中提供一个关键字extends,用这个关键字,可以让一个类和另一个类建立起父子关系。

public class Student extends People { }

  • Student称为子类(派生类),People称为父类(超类 或 基类)
  • 作用:当子类继承父类后,就可以直接使用父类公共的属性和方法了

使用继承的好处

  • 可以提高代码的复用性,减少代码冗余,增强类的功能扩展性

继承后子类的特点:

  • 子类继承父类,子类可以得到父类的属性和行为,子类可以使用。
  • Java中子类更强大

代码演示如下:

定义一个人类:父类

public class People {
    /**
       人类:父类
     */
    public void run(){
        System.out.println("人会跑~");
    }
}

再定义一个学生类:子类

public class Student extends People {
    /**
       学生类:子类
     */
}

最后定义一个测试类

public class Test {
    public static void main(String[] args) {
        //目标:认识继承这种关系。搞清楚使用继承的好处
        Student s = new Student();
        s.run();
    }
}

运行后的结果如图:

 

 

继承设计规范:

  • 子类们相同特征(共性属性,共性方法)放在父类中定义,子类独有的属性和行为应该定义在子类自己里面

为什么子类独有的属性和行为应该定义在子类自己里面呢?

  • 如果子类的独有属性、行为定义在父类中,会导致其它子类也会得到这些属性和行为,这不符合面向对象逻辑

 代码演示如下:

父类代码:

public class People {
    /**
       人类:父类
     */
    private String name;
    private int age;
    /**
       查看课表
     */
    public void queryCourse(){
        System.out.println(name + "正在查看课表~");
    }

    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 Student extends People {
    /**
       独有的行为,填写反馈信息
     */
    public void writeInfo(){
        System.out.println(getName() + "写下了:学习语法,好哈皮~");
    }
}


public class Teacher extends People {
    /**
     独有的行为,发布问题
     */
    public void writeQuestion(){
        System.out.println(getName() + "学的怎么样?");
    }
}

测试类:

public class Test {
    public static void main(String[] args) {
        //目标:理解继承的设计思想
        Student s = new Student();
        s.setName("鸟儿");//使用父类的
        s.setAge(21);//使用父类的
        System.out.println(s.getName());//使用父类的
        System.out.println(s.getAge());//使用父类的
        s.queryCourse();//使用父类的
        s.writeInfo();//子类的方法
        System.out.println("-------------------------------");
        Teacher t = new Teacher();//使用父类的
        t.setName("鸟老师");//使用父类的
        t.setAge(60);//使用父类的
        System.out.println(s.getName());//使用父类的
        System.out.println(s.getAge());//使用父类的
        t.queryCourse();//使用父类的
        t.writeQuestion();//使子类的方法
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值