继承的优点:
注意:不要为了获取其他类的功能,简化代码而继承,必须是类与类之间有所属关系才可以继承。1、提高了代码的复用性。
2、让类与类之间产生了关系,有了这个关系,才有了多态的特性。
java中的继承:
1、java只支持单继承,不支持多继承。(因为多继承容易带来安全隐患。当多个父类定义了相同的成员,子类对象不确定运行哪一个。但java保留这种机制,并用另一种方式来体现,多实现,即接口)其中单继承也即是子类只能有一个父类。
下面程序会报错:(多继承)
public class Demo22 { public static void main(String[] args){ C c=new C(); c.show(); } } class A{ void show(){ System.out.println("a"); } } class B{ void show(){ System.out.println("b"); } } class C extends A,B{ }
2、但是一个父类可以被多个子类继承,这是多层继承。(因为父类是所有子类的共性描述)
注意:在具体调用时,要创建最子类的对象,这是因为;一是因为有可能父类不能创建对象,二是创建子类对象可以使用更多的功能,包括父类基本的也包括子类本身特有的class A{ void show(){ System.out.println("a"); } } class B extends A{ } class C extends A{ }
子父类出现后,类成员的特点:比如下图 C继承了B,而B又继承了A ,一般创建对象就创建C类的对象。
当父类与子类定义的变量不同时,类中成员包括三部分:
1、变量
2、函数
3、构造函数
public class Demo23 { public static void main(String[] args){ B b=new B(); System.out.println(b.num1+" "+b.num2); } } class A{ int num1=1; } class B extends A{ int num2=2; }
输出结果为 1 2
当子类中出现非私有的同名成员变量时,(子类会把父类的覆盖掉),这时子类要访问本类中的变量,用this,如果子类要访问父类中的同名变量,用super(super代表父类对象的引用,this代表本类对象的引用)
public class Demo23 { public static void main(String[] args){ B b=new B(); System.out.println(b.num+" "+b.num); } } class A{ int num=1; } class B extends A{ int num=2; }
输出结果为:2 2