您的位置:首页 > 编程语言 > Java开发

Java-继承之定义格式及注意事项

2018-01-30 14:49 274 查看

继承

继承定义

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中那么多个类无需再定义这些属性和行为,只要继承那个类即可。

就比说动物,狗是动物,猫是动物,大熊猫也是动物,他们都有名字,都有年龄,爱好等等,即就是,动物的属性和行为,小动物们都有。

继承的格式,

通过extends关键字可以实现类与类的继承 class 子类名 extends 父类名 {}

单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。

继承不仅提高了代码的复用性,而且提高了代码的维护性,不用再去定义单独类,找到共性即可。

需要注意的是类和类之间的关系,是多态的前提

继承也有弊端:类的耦合性增强(耦合性是指类和类之间的关系)

在程序开发的过程中,要求高内聚,低耦合,类和类之间的关系如果太多,修改起来就意味着每一个都会修改。

//People类
public class People {

public String name;
public int age;
private String interest;

public void talk() {
System.out.println("父类的非私有方法");

}

private void show(){
System.out.println("父类的私有方法");
}

}

//学生类
public class Student extends People{

}

//测试类

Student student = new Student();
student.age=20;
student.name="周杰伦";
student.talk();//父类的非私有方法
//student.show(); 调不到 因为是父类私有的方法
System.out.println(student.age);//20
System.out.println(student.name);//周杰伦


继承仅支持单继承,不支持多继承

例如 class Student extends People,School,Person--这是不允许的。

但是Java支持多层继承,例如动物<-猫<-折耳猫

class Cat extends Animal
class ZheErCat extends Cat


继承注意事项:

子类只能继承父类非私有的成员变量和成员方法。

子类不能继承父类的构造方法,但是可以通过super()去调用父类的构造方法。

Student student2 = new Student();
student2.interest;//报错,调不到
student2.show();//报错,也调不到
//这就说明了父类私有的东西子类无法继承


会遇见这样一种情况,子类中的成员变量和父类中的成员变量名称一样,遇见这种情况,系统会采用“就近原则”。

//动物父类
public class Animal {
String name="父类名字";
}

//狗 子类

public class Dog extends Animal{

String name="子类名字";

public void show(String tname){
System.out.println("方法中");
System.out.println(name);
}

}

//测试类1

// a: 在子类的方法的局部范围找,有就使用

Dog dog = new Dog();
dog.show("菜花");
System.out.println(dog.name);

/*答案:方法中 子类名字 子类名字*/

//如果狗这个子类变成如下情况:

public class Dog extends Animal{

String name="子类名字";
}

//测试类2

// b: 在子类的成员范围找,有就使用

Dog dog2 = new Dog();
System.out.println(dog2.name);//子类名字

//如果狗这个子类变成如下情况:

public class Dog extends Animal{
}

//测试类3

// c: 在父类的成员范围找,有就使用

Dog dog3 = new Dog();
System.out.println(dog3.name);//父类名字

// d:如果还找不到,就报错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息