什么是继承?
继承(extends)让类与类之间产生关系,子父类关系 。子类继承父类,可以得到父类的全部属性和方法 (除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法)。
继承的语法
class 子类 extends 父类{
}
继承的好处和弊端
- 提高了代码的重用,便于维护,和复用性
- 类的耦合性增强了。违反了开发原则
- 开发的原则:高内聚,低耦合。
- 耦合:类与类的关系
- 内聚:就是自己完成某件事情的能力
继承的注意事项:
- Java中只有单继承,类没有多继承,接口有多继承。支持多层继承(继承体系)
- .如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object。
- 子类不能继承父类的构造方法,但是可以通过super()关键字去访问父类构造方法。
- 不要为了部分功能而去继承
- 如果想用这个体系的所有功能用最底层的类创建对像
- 如果想看这个体系的共性功能,看最顶层的类
this 和super
:this和super都代表什么
- this:代表当前对象的引用,谁来调用我,我就代表谁
- super:代表当前对象父类的引用
:this和super的使用区别
* a:调用成员变量
- this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
- super.成员变量 调用父类的成员变量
* b:调用构造方法
- this(...) 调用本类的构造方法
- super(...) 调用父类的构造方法
* c:调用成员方法
- this.成员方法 调用本类的成员方法,也可以调用父类的方法
- super.成员方法 调用父类的成员方法
package com.company;
public class Welcome {
public static void main(String[] args) {
son S = new son();
S.test(); // 子类调用父类中的方法
}
}
class Father {
int age = 18;
public void eat() {
System.out.println("我会吃饭");
}
}
class son extends Father {
String name;
public void test() {
System.out.println(this.age); //this 调用父类中的属性
System.out.println(this.name); // 也可以掉用子类的属性
System.out.println(super.age); // 只能调用父类的属性
super.eat(); // 调用父类的成员方法
}
}
--------------------------------------------
18
null
18
我会吃饭