A类
//父类
public class A {
//公开成员
public int i;
public void print1(){
System.out.println("====print1====");
}
//私有成员
private int j;
private void print2(){
System.out.println("====print2====");
}
}
B类
//子类
public class B extends A{
private int k;
public void print3(){
//子类可以继承父类的非私有成员
System.out.println(i);
print1();
//System.out.println(j); //报错
//print2(); //报错
}
}
Test类
public class Test {
public static void main(String[] args) {
// 目标:认识继承,掌握继承的特点
B b = new B();
System.out.println(b.i);
//System.out.println(b.j); //报错
//System.out.println(b.k); //报错
b.print1();
//b.print2(); //报错
b.print3();
}
}
案例需求:
? ? ? ? 某员工系统中需要处理员工和讲师的数据
People类
public class People {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Teacher类
public class Teacher extends People{
private String skill;
public String getSkill() {
return skill;
}
public void setSkill(String skill) {
this.skill = skill;
}
public void ptintInfo(){
System.out.println(getName() + "具备的技能:" + skill);
}
}
Test类
public class Test {
public static void main(String[] args) {
//目标:搞清继承的好处
Teacher t = new Teacher();
t.setName("张三");
t.setSkill("java、String");
System.out.println(t.getName());
System.out.println(t.getSkill());
t.ptintInfo();
}
}
修饰符 | 在本类中 | 在同一包下的其他类里 | 在任意包下的子类里 | 任意包下的任意类里 |
---|---|---|---|---|
private | √ | |||
缺省 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
Java是单继承的,Java中的类不支持多继承,但是支持多层继承
1、在子类方法中访问其他成员(成员变量、成员方法),是依照就近原则的。
2、如果父类中,出现了重名的成员,会优先使用子类的,如果此时一定要在子类中使用父类的怎么办?