#JAVA#面向对象(继承2)
package 继承;
/*
java中继承的特点:
A:java中只支持单继承,不支持多继承
有些语言是支持多继承的,格式:extends 类1,类2,...
B:java支持多层继承(继承体系)
*/
/*class Father{
}
class Mother{
}
class Son extends Father,Mother(错误){
}
*/
class GrandFather{
public void show() {
System.out.println("***");
}
}
class Father extends GrandFather{
public void method() {
System.out.println("&&&");
}
}
class Son extends Father{};
class extendsDemo {
public static void main(String args[]) {
Son s=new Son();
s.method();//使用父亲的
s.show();//使用爷爷的
}
}
package 继承;
/*
继承的注意事项:
A:子类只能继承父类所有非私有的成员(成员方法和成员变量)
B:子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法
C:不要为了部分功能而去继承
class A{
public void show1(){}
public void show2(){}
}
class B{
public void show2(){}
public void show3(){}
}
//我们发现B类中出现了和A类一样的show2()方法,所以,就用继承来体现
class B extends A{
public void show3();
}
这样其实不好,虽然有了show2()但还多了show1(),有可能show1()是不需要的
什么时候考虑使用继承:
继承其实考虑的事一种关系:“is a”,
person
Student
Teacher
水果
苹果
香蕉
橘子
采用假设法:
如果有两个类A,B,只要它们符合A是B的一种或者B是A的一种,就可以考虑使用继承
*/
class Father{
private int num=10;
public int num2=20;
//私有方法,子类不能继承
private void show() {
System.out.println(num);
System.out.println(num2);
}
public void method() {
System.out.println(num);
System.out.println(num2);
}
}
class Son extends Father{
public void function() {
//System.out.println(num); 错误,子类不能继承父类私有成员
System.out.println(num2);
}
}
class extendsDemo {
public static void main(String args[]) {
Son s=new Son();
//s.show(); 错误,子类不能继承父类私有方法
s.method();
s.function();
}
}