java的继承
2016-09-19 17:56
281 查看
继承是:新定义的类是从已有的类中获取属性和方法的现象。 这个已有的类叫做父类, 从这个父类获取属性和方法的类叫做子类。
继承的好处
1. 提高了代码的重用性
2. 让类和类之间产生了关系, 为多态创造了条件。
继承(extends)的格式
class SubClass extends SuperClass {
//执行语句;
}
super关键字
1. super关键字和this的用法相同
2. this代表本类引用, super代表父类引用
3. 当子类和父类出现同名成员的时候, 可以用super 和 this进行区分
对从父类继承过来的方法进行重写(Override)
1. 当子类中出现与父类一模一样的方法(返回值, 函数名, 形参)时, 会出现重写(Override)操作.
class SubClass extends SuperClass {
@Override //@Override表示下面出现的方法会出现重写操作,由编译器检查,如果达不到重写的条件,就会报错。一定程度上增加了代码的安全性
和健壮性
2. 在对父类方法进行重写(Override)操作的时候,子类不允许出现与父类同名同参但是不同返回类型的方法.
3. 子类重写父类的方法的访问权限要大于或者等于父类中被重写的方法
/*什么是继承*/ public class ExtendsDemo1 { public static void main(String[] args) { Truck t = new Truck(); t.size = 100; //不建议这么写。初始化成员变量最好使用构造方法,或者提供set(), get()接口. //货车类的一个实例t从汽车类从继承了size, color属性。 //而货车比汽车多一个货箱 } } class Car { //汽车 int size; //车体大小 String color; //颜色 } class Truck extends Car { //货车 String packingBox; //货箱 }
继承的好处
1. 提高了代码的重用性
2. 让类和类之间产生了关系, 为多态创造了条件。
继承(extends)的格式
class SubClass extends SuperClass {
//执行语句;
}
super关键字
1. super关键字和this的用法相同
2. this代表本类引用, super代表父类引用
3. 当子类和父类出现同名成员的时候, 可以用super 和 this进行区分
/* super的用法 * 输出结果: * super.i = 10, this.i = 20 */ public class SuperDemo { public static void main(String[] args) { new SubClass().showMessage(); } } class SuperClass { int i = 10; } class SubClass extends SuperClass { int i = 20; public void showMessage() { System.out.printf("super.i = %d, this.i = %d\n", super.i, this.i); } }
对从父类继承过来的方法进行重写(Override)
1. 当子类中出现与父类一模一样的方法(返回值, 函数名, 形参)时, 会出现重写(Override)操作.
/* 怎么对从父类继承过来的方法进行重写(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 { public void speak() { System.out.println("SuperClass: I am good~"); } }
class SubClass extends SuperClass {
@Override //@Override表示下面出现的方法会出现重写操作,由编译器检查,如果达不到重写的条件,就会报错。一定程度上增加了代码的安全性
和健壮性
public void speak() { super.speak(); System.out.println("SubClass: I am excellent~~~"); } }
2. 在对父类方法进行重写(Override)操作的时候,子类不允许出现与父类同名同参但是不同返回类型的方法.
/* 子类中不允许出现与父类同名同参但是不同返回类型的方法 * 出错信息: * 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 { public void f() { } } class SubClass extends SuperClass { @Override public int f() { return 1; } }
3. 子类重写父类的方法的访问权限要大于或者等于父类中被重写的方法
/* 子类重写父类的方法的访问权限要大于或者等于父类方法的访问权限 * 出错信息: * 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 { public static void main(String[] args) { } } class SuperClass { public void f() { } } class SubClass extends SuperClass { @Override protected void f() { //把这里的访问权限改为public即可 } }
相关文章推荐
- 解析Java继承中方法的覆盖和重载
- 方法重载和方法重写
- 黑马程序员_Java继承、多态、接口零碎知识总结
- java方法重写和super关键字
- JAVA继承知识小结
- JAVA面向对象——继承
- JAVA的extends用法
- Java继承
- Java基础--继承方法调用顺序
- 继承注意的问题
- JAVA继承 抽象类 接口
- 为什么java中子类重写父类的方法时声明抛出异常不能比父类范围大
- Java如何判断对象和类和类与类之间的关系
- Java继承与构造函数
- java重写(覆盖)的实现
- java继承是实现
- 智渔课堂官方免费教程十四:Java面向对象三大特性之继承
- 笔试题错误二
- java继承
- Java4Android笔记之Java中的函数的重写