继承就是子类继承父类的属性,方法,这里的属性和方法是全部类型的,继承是继承了但是情况却不一样,这里只讨论三种访问权限的影响:public ,private , protected ,对于子类来说除了private 修饰的属性和方法不能直接使用外,其它两种public protected修饰的属性和方法来说,属性其子类是可以直接访问并修改的,方法是能直接访问的。如果子类对继承的方法没有重写的必要,可以不用重写而在需要使用的时候调用就行了,因为在继承父类的时候就拥有了。
Father.java
package inherit;
public class Father {
private String name; //私有属性姓名
public void swimming() { //游泳方法
System.out.println("我会蛙泳");
}
public void playfootball(){ //踢足球方法
System.out.println("我会踢一点足球");
}
}
Son.java
package inherit;
public class Son extends Father {
private String name; //私有属性,姓名
public void baskedball() { //自己新的方法
System.out.println("我会打篮球");
}
@Override
public void playfootball() { //重写父类方法
System.out.println("我足球踢得很好");
}
}
MainTest.java
package inherit;
public class MainTest {
public static void main(String[] args) {
Son ason = new Son();
Son bson = new Son();
ason.baskedball(); //儿子自己新的方法
ason.swimming(); //儿子继承的父亲的方法
ason.playfootball();//儿子重写的父亲的方法
}
}
private 修饰的: 其子类只是继承了,就像看不见摸不着的东西一样,只有存在的意义,没有访问和使用的权力
public 修饰的: 就可以当作子类实实在在拥有的,和父类共享的一样,在继承中,极大实现了代码复用率
protected 修饰的:对于父子类而言,和public一样使用
重写的存在 :重写是对父类方法的重写,在本例中,对playfootball()方法进行了重写,谈一谈方法重写,注意它和重载不一样,这里是因为在同一个能力描述中,它们的能力值不一样,对于playfootball方法而言,父类只是会一点足球,而子类却是足球玩的很好,这就是它神奇的地方,同样的方法名调用它的对象不同可以实现具体不同的方法,极大提高了代码的可读性。这样看来就很容易理解什么时候要用到重写了,需要用到同样的方法名但父子类在方法实现上有所不同的时候。特别注意,和父类同名的属性不叫为重写,称为变量隐藏,当子类对象调用这个属性时,总是调用子类而非父类的。
这里提到了在继承中,子类是无法直接访问和使用父类private修饰的属性和方法的,既然是无法直接,那么间接呢,答案是可以,设想一下,子类是可以调用父类public修饰的东西,而private对自己类本身又没有约束,因此,我们可以通过调用父类public 方法来实现调用或者修改父类private修饰的属性,下一篇就这个话题深入了解一下。网址链接:https://blog.youkuaiyun.com/weixin_43288322/article/details/84029880