美食网站黑米如何做,上海自助建站官网,深圳龙华建设工程交易中心网站,网站容易出现的问题继承#xff1a;
使用情景#xff1a;当类与类之间#xff0c;存在相同#xff08;共性#xff09;的内容#xff0c;并满足子类是父类的一种#xff0c;就可以考虑使用继承#xff0c;来优化代码
Java中提供一个关键字extends#xff0c;用这个关键字#xff0c;我…继承
使用情景当类与类之间存在相同共性的内容并满足子类是父类的一种就可以考虑使用继承来优化代码
Java中提供一个关键字extends用这个关键字我们可以让一个类和另一个类建立起继承关系 public class Student extends Person{};Student被称为子类派生类person称为父类基类或超类
继承的格式public class 子类 extends 父类{}
使用继承的好处
可以把多个子类中重复的代码抽取到父类中了提高代码的复用性子类可以在父类的基础上增加其他功能使子类更强大 继承的特点Java只支持单继承不支持多继承但支持多层继承
注
单继承一个子类只能继承一个父类不支持多继承子类不能同时继承多个父类多层继承子类A继承父类B父类B可以继承父类C每一个类都直接或者间接的继承于Object子类只能访问父类中非私有的成员
子类到底能继承父类中的哪些内容
构造方法非私有 不能private 不能成员变量非私有 能private 能成员方法能被添加入虚方法表 能否则不能
注虚方法可以被覆写(Overriding)的方法都可以称作虚方法因此虚方法并不需要做特殊的声明也可以理解为除了用static、final、private修饰之外的所有方法都是虚方法。
特点
1.成员变量的访问特点就近原则谁离我近我就用谁
先在局部位置找然后在本类成员位置找然后在父类成员位置找逐级往上。
若重名则sout(name);为从局部位置开始往上找
sout(this.name);为从本类成员位置开始往上找
sout(super.name);为从父类成员位置开始往上找 2.成员方法的继承特点
直接调用满足就近原则谁离我近我就用谁super调用直接访问父类
方法的重写
当父类的方法不能满足子类现在的需求时需要进行方法重写
书写格式在继承体系中子类出现了和父类一模一样的方法声明我们就称子类这个方法是重写的方法
Override重写注解
Override是放在重写后的方法上校验子类重写时语法是否正确加上注解后如果有红色波浪线表示语法错误。建议重写方法都加Override注解代码安全优雅 方法重写的注意事项和要求
重写方法的名称形参列表必须与父类中的一致子类重写父类方法时访问权限必须大于等于父类暂时了解空着不写protectedpublic 子类重写父类方法时返回值类型子类必须小于等于父类建议重写的方法尽量和父类保持一致私有方法不能被重写子类不能重写父类的静态方法56点总结只有被添加到虚方法表中的方法才能被重写 构造方法的继承特点
父类中的构造方法不会被子类继承子类中所有的构造方法默认先访问父类中的无参构造再执行自己
为什么
子类在初始化的时候有可能会使用到父类中的数据如果父类没有完成初始化子类将无法使用父类的数据子类初始化之前一定要调用父类构造方法先完成父类数据空间的初始化
怎么调用父类构造结构的 子类构造方法的第一行语句默认都是super不写也存在且必须在第一行如果想调用父类有参构造必须手动写super进行调用 继承中构造方法的访问特点
子类不能继承父类的构造方法但是可以通过super调用子类构造方法的第一行有一个默认的super()默认先访问父类中无参的构造方法再执行自己如果想要方法文父类有参构造必须手动书写 this、super的使用总结
this理解为一个变量表示当前方法调用者的地址值super代表父类存储空间
关键字访问成员变量访问成员方法访问构造方法this this.成员方法 访问本类成员方法 this.成员方法... 访问本类成员方法 this... 访问本类构造方法 super super.成员方法 访问父类成员方法 super.成员方法... 访问父类成员方法 super... 访问父类构造方法 练习 package itheimaoopextenceao5;public class Employee {private String id;private String name;private double salary;public Employee() {}public Employee(String id, String name, double salary) {this.id id;this.name name;this.salary salary;}/*** 获取* return id*/public String getId() {return id;}/*** 设置* param id*/public void setId(String id) {this.id id;}/*** 获取* return name*/public String getName() {return name;}/*** 设置* param name*/public void setName(String name) {this.name name;}/*** 获取* return salary*/public double getSalary() {return salary;}/*** 设置* param salary*/public void setSalary(double salary) {this.salary salary;}public String toString() {return Employee{id id , name name , salary salary };}public void work(){System.out.println(员工在工作);}public void eat(){System.out.println(吃米饭);}
}package itheimaoopextenceao5;public class Manager extends Employee {private double bouns;public Manager() {}public Manager(String id, String name, double salary, double bouns) {super(id, name, salary);this.bouns bouns;}public double getBouns() {return bouns;}public void setBouns(double bouns) {this.bouns bouns;}Overridepublic void work(){System.out.println(管理他人);}}package itheimaoopextenceao5;public class cooker extends Employee {public cooker() {}public cooker(String id, String name, double salary) {super(id, name, salary);}Overridepublic void work(){System.out.println(厨师正在炒菜);}
}package itheimaoopextenceao5;public class Test {public static void main(String[] args) {Manager mnew Manager(heima001,zhangsan,4000,2000) ;System.out.println(m.getId(),m.getName() ,m.getSalary() ,m.getBouns() );m.eat() ;m.work() ;}
}