面向对象的三大性质之一----继承性

面向对象的三大性质之一----继承性,第1张

继承性的优点

1、减少代码冗余

2、便于功能扩展

3、为多态性提供前提

继承性的格式

class A extends B

A:子类、派生类、subclass

B:父类、基类、superclass

一旦声明了继承类,子类会获取父类中声明的属性和方法

private权限的属性也会一并继承,只是由于权限不显示,不能影响程序的封装性

子类的丰富性要大于父类

规定:

1、一个类可以被多个子类继承

2、一个类有且仅有一个父类(单继承性)(与C++有区别,Java不支持多继承,并以接口的方式弥补)

3、子类能获取所有间接父类的属性和方法

4、如果没有显式声明一个类的父类,那么默认此类继承于Java.lang.object类

5、所有的Java类都直接或者间接的继承于object类

public class Person
{
    private String name;

    private int age = 1;

    private boolean isMale;

    public void eat()
    {
        System.out.println("人可以吃饭");
    }

    public void sleep()
    {
        System.out.println("人可以睡觉");
    }
   

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public boolean isMale() {
        return isMale;
    }

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

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

    public void setMale(boolean male) {
        isMale = male;
    }
};

class Chinese extends Person{
    private String nation;

    public void setNation(String nation) {
        this.nation = nation;
    }

    public String getNation() {
        return nation;
    }

    public void talk(String language)
    {
        System.out.println("中国人可以说话,说的是"+ language);
    }
}
//在此例中,类既满足了封装性,也同时实现了继承性
//Chinese就是Person的子类,它具有所有Person中的属性和方法
//同时它也可以在原有基础上增加属性和,比如nation和talk就是额外实现的方法和属性

 我们再测试一下

public class Persontext
{
    public static void main(String[] args)
    {
        Chinese c1 = new Chinese();
        c1.talk("Chinese");
        c1.sleep();
        c1.eat();
        c1.setAge(18);
        System.out.println("此人年龄为:"+ c1.getAge());
        c1.setNation("China");
        System.out.println("此人国籍为:"+ c1.getNation());

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

        Person p1=new Person();
        p1.sleep();
        p1.setAge(19);
        System.out.println("此人年龄为:"+ p1.getAge());

    }
};
//比较明显的是,China中具有Person的属性和方法
//并且可以直接调用,不需要在China类中再次显式声明
//但是在Person中不能调用在China的方法和属性
//由此处就可以理解子类的丰富性要远大于父类和间接父类

上述测试结果为

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/562364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-01
下一篇 2022-04-01

发表评论

登录后才能评论

评论列表(0条)

保存