继承性的优点
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的方法和属性
//由此处就可以理解子类的丰富性要远大于父类和间接父类
上述测试结果为
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)