java教程之java继承示例详解
什么是继承(extends)? 继承是:新定义的类是从已有的类中获取属性和方法的现象。 这个已有的类叫做父类, 从这个父类获取属性和方法的类叫做子类。 ExtendsDemo1.java 复制代码 代码如下: /*什么是继承*/ public class ExtendsDemo1 { public static void main(String[] args) { Truck t = new Truck(); t.size = 100; //不建议这么写。初始化成员变量最好使用构造方法,或者提供set(),get()接口. //货车类的一个实例t从汽车类从继承了size,color属性。 //而货车比汽车多一个货箱 } } class Car { //汽车 class Truck extends Car { //货车 继承的好处 1. 提高了代码的重用性 2. 让类和类之间产生了关系, 为多态创造了条件。 继承(extends)的格式 复制代码 代码如下: class SubClass extends SuperClass { //执行语句; } super关键字 1. super关键字和this的用法相同 2. this代表本类引用, super代表父类引用 3. 当子类和父类出现同名成员的时候, 可以用super 和 this进行区分 SuperDemo.java 复制代码 代码如下: /* super的用法 * 输出结果: * super.i = 10,this.i = 20 */ public class SuperDemo { public static void main(String[] args) { new SubClass().showMessage(); } } class SuperClass { class SubClass extends SuperClass { public void showMessage() { 对从父类继承过来的方法进行重写(Override) 1. 当子类中出现与父类一模一样的方法(返回值, 函数名, 形参)时, 会出现重写(Override)操作. OverrideDemo1.java 复制代码 代码如下: /* 怎么对从父类继承过来的方法进行重写(Override) * 输出结果: * SuperClass: I am good~ * SubClass: I am excellent~~~ */ public class OverrideDemo1 { public static void main(String[] args) { SubClass sc = new SubClass(); sc.speak(); } } class SuperClass { class SubClass extends SuperClass { 2. 在对父类方法进行重写(Override)操作的时候,子类不允许出现与父类同名同参但是不同返回类型的方法. OverrideDemo2.java 复制代码 代码如下: /* 子类中不允许出现与父类同名同参但是不同返回类型的方法 * 出错信息: * OverrideDemo.java:20: error: f() in SubClass cannot override f() in SuperClass * public int f() { * ^ * return type int is not compatible with void * OverrideDemo.java:19: error: method does not override or implement a method from a supertype * @Override * ^ * 2 errors */ public class OverrideDemo2 { public static void main(String[] args) { } class SuperClass { } class SubClass extends SuperClass { 3. 子类重写父类的方法的访问权限要大于或者等于父类中被重写的方法 OverrideDemo3.java 复制代码 代码如下: /* 子类重写父类的方法的访问权限要大于或者等于父类方法的访问权限 * 出错信息: * OverrideDemo.java:18: error: f() in SubClass cannot override f() in SuperClass * protected void f() { * ^ * attempting to assign weaker access privileges; was public * 1 error */ public class OverrideDemo3 { } class SuperClass { class SubClass extends SuperClass { } 访问控制符 访问控制符有:public,protected,default,private 有些需要一点包(package)的知识,所以等到讲包的时候再说. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |