在继承的关系,“子类就是一个父类”,也就是说,子类可以被当作父类看待。 例如父类是员工,子类是讲师,那么“讲师就是一个员工”,关系:is-a; 定义父类夫人格式:(一个普通的类定义) public class 父类名称{ //'''''' } 定义子类的格式 public class 子类名称 extends 父类名称{ // }
extends 就是用来连接子类和父类的关键字
例子
/*
定义一个父类:员工
*/
public class Employee {
public void method() {
System.out.println("方法执行!");
}
}
//子类
public class Teacher extends Employee{
}
//定义另一个子类,助教
public class Assistant extends Employee {
}
//主函数调用
public class Demo01Extends {
public static void main(String[] args) {
//创建了一个子类对象
Teacher teacher = new Teacher();
//teacher类当中虽然什么都没有写,但是会继承来自父类的method方法。
teacher.method();
//创建了另一个子类助教对象
Assistant assistant = new Assistant();
assistant.method();
}
}
访问父成员变量和本类成员变量的方法对比
局部变量: 直接写成员变量名 本类的成员变量: this.成员变量名 父类的成员变量: super.成员变量名
/*
在父子类的继承关系当中,创建子类对象,访问成员方法的规则。
创建的对象是谁,优先用谁,如果没有则向上找。
注意事项:
无论是成员方法还是成员变量,如果没有都是向上找父类,绝不会向下找子类的。
重写(Override)
概念,在继承关系当中,方法的名称一样,参数列表也一样。
重写(Override):方法的名称一样,参数列表【也一样】,覆盖,覆写。
重载(Overload):方法的名称一样,参数列表【不一样】。
方法的覆盖重写特点:创建的是子类对象,则优先用子类方法。
*/
public class Demo01ExtendsMethod {
public static void main(String[] args) {
Zi zi = new Zi();
zi.methodsFu();
zi.methodsZi();
//创建的是new子类对象,所以优先用子类方法
zi.methods();
}
}
public class Fu {
public void methodsFu(){
System.out.println("父类执行");
}
public void methods(){
System.out.println("父类重名方法执行!");
}
}
public class Zi extends Fu{
public void methodsZi(){
System.out.println("子类对象执行");
}
public void methods(){
System.out.println("子类重名方法执行!");
}
}
知识点总结
方法覆盖重写的注意事项: 1.必须保证父子类之间方法的名称相同,参数列表也相同。 @Override:写在方法前面,用来检测是不是有效的正确覆盖重写。 这个注解就算不写,只要满足要求,也是正确的方法覆盖重写。 2.子类方法的返回值必须小于等于父类方法的返回值范围。 前提:Object类是所有类的公共最高父类(祖宗类),java.lang.String就是Object的子类。 3.子类方法的权限必须{大于等于}父类方法的权限修饰符。 小扩展提示:public >protected>(default)空白不写>private 备注:(default)不是关键字default,而是什么都不写,留空。
感想
再加油!