类的特点--继承

来源:互联网 发布:关闭手机数据连接 编辑:程序博客网 时间:2024/05/16 10:29

继承的优点:

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


函数另一个特性——重写(覆盖

当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽具备该功能,功能的内容却和父类不一致,这时,没有必要定义新功能,而是覆盖特性,保留父类的功能,重写功能内容。


覆盖的注意事项:

1、子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。

2、静态只能覆盖静态。


重载:只看同名函数的参数的列表。

重写:子父类方法要一模一样。

权限分为:public ,private,protect和默认权限,其中默认权限介于public和private之间。







原创粉丝点击