继承:
概念:让类与类之间产生关系,子父类关系
理解: 猫与狗都有相同的属性(例如毛色,腿的个数)
如果定义两个类,类中都有这些成员变量以及对应的setXxx()与getXxx()方法,
那么代码的复用性就太差了,可以抽取出来一个动物类,然后可以继承它,然后
猫与狗类同时继承动物类,可以提高代码的复用性
继承的特点:
A:java中只支持单继承,不支持多继承
B:java支持多层继承,子类享有父亲和爷爷...的属性
类继承的特点:
如果想看到最多的功能,那么创建最低层的对象
如果想看到共性的功能,那么创建最顶层的对象
继承的好处:
A:提高了代码的复用性
B:提高了代码的维护性
C:让类与类之间产生了关系,是多态的前提
继承的弊端:
提高了耦合性 (开发的原则:高内聚,低耦合)
继承的注意事项:
A:子类只能继承父类所有非私有的成员
B:子类不能继承父类的构造方法,但可以通过super关键字访问
C:不要为了单一的功能去继承
this与super的使用区别(子类继承父类的变量与方法,当标识符不相同时,this就相当于调用了继承下来的方法):
A:调用成员变量
this.成员变量: 调用本类的成员变量,也可以调用父类中的成员变量
super.成员变量: 调用父类的成员变量
B: 调用构造方法
this(..) 调用本类的构造方法
super(..) 调用父类的构造方法
C:调用成员方法
this.成员方法 调用本类的成员方法,也快成调用父类的成员方法
this.成员方法 调用本类的成员方法
继承中构造方法的关系
子类中所有的构造方法都会访问父类中空参数的构造方法
--> 是为了在子类初始化之前,完成父类数据的初始化
其实,在每一个构造方法的第一条语句默认都是:super() Object为所有类的父类
如果子类没有无参构造方法怎么办? --> 调用父类的有参构造
①通过super(..)调用父类的有参构造
②通过this(..)调用本类的其他构造方法,间接的进行父类的初始化
注意事项: super() 与 this() 必须出现在构造方法的第一条语句上,也就是说,不能共存
[Java] 纯文本查看 复制代码 class Demo_Student {
public static void main(String[] args) {
Student s = new Student("hello",23);
System.out.println(s.getName()+".."+s.getAge());
s.eat();
s.study();
}
}
class Person {
private String name ;
private int age;
public Person(){}
public Person(String name, int age){
this.name = name;
this.age = age;
}
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 void eat(){
System.out.println("吃饭吃饭");
}
}
class Student extends Person{
public Student(){}
public Student(String name,int age){
super(name,age);
}
public void eat(){
System.out.println("学生吃饭");
}
public void study(){
System.out.println("学生学习");
}
}
|
|