目录
一,继承的特点
1.继承只支持单继承,不能多继承
2.继承支持多层继承
3.一个父类可以有多个子类
4.构造方法不能继承,也不能重写 私有方法可以继承,但是不能被重写 静态方法可以继承,但是不能被重写
二,问题:如何为父类中private的成员变量赋值(经验值)
1.利用set赋值
2.利用构造方法赋值
一,继承的特点
1.继承只支持单继承,不能多继承
public class A extends B,C{} -> 错误
2.继承支持多层继承
public class A extends B{}
public class B extends C{}
3.一个父类可以有多个子类
public class A extends C{}
public class B extends C{}
4.构造方法不能继承,也不能重写
私有方法可以继承,但是不能被重写
静态方法可以继承,但是不能被重写
对4中私有和静态的演示,创建父类子类
public class Fu {
public void method(){
System.out.println("method方法");
}
}
public class Zi extends Fu{
@Override
public void method(){
System.out.println("method方法");
}
/*@Override //私有不能被重写
private void method01(){
System.out.println("method方法");
}*/
//@Override //静态不能被重写,但可以继承
public static void method02(){
System.out.println("method方法");
}
}
测试类(测试静态方法)
public class test {
public static void main(String[] args) {
Zi zi = new Zi();
zi.method02();
}
}
二,问题:如何为父类中private的成员变量赋值(经验值)
1.利用set赋值
因为父类私有方法不能直接用,但提供的get,set方法是可以直接使用的,用Employee和Teacher类来演示
public class Employee {
private String name;
private int age;
public Employee() {
}
public Employee(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 class Teacher extends Employee{
}
测试类
public class test {
public static void main(String[] args) {
Teacher teacher = new Teacher();
teacher.setName("张三");
teacher.setAge(23);
System.out.println(teacher.getName()+".........."+teacher.getAge());
}
}
2.利用构造方法赋值
用Manager类演示
public class Manager extends Employee{
public Manager() {
}
public Manager(String name, int age) {
super(name, age);
}
}
用Manager的构造方法
System.out.println("=========================");
Manager manager = new Manager("李四", 43);
System.out.println(manager.getName()+"..............."+manager.getAge());
原理:new完Manager后在参里给父类有参构造赋了值,李四,43,继续传给里面的super关键字,然后继续传给Employee参里面的name和age
this.name = name=李四;
this.age = age=43;
然后就成功的赋值了父类中的私有成员