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

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

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

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

继承性的优点

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的方法和属性
//由此处就可以理解子类的丰富性要远大于父类和间接父类

上述测试结果为

 

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

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

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