标签:ml2 ctr got ued ota load 调用 mdi qbc
继承的语法:
class 子类名 extends 父类名
{
……
}
父类(parent class)
超类(super class)通常指直接上级
基类(base class)通常指包括直接上级在内的“上级的上级”
继承条件下类的访问权限
public: 外界可自由访问
private: 外界不可访问
protected: 同一包中的子类都可以访问,另一包中的子类(派生于同一个父类)也可以访问
default: 如果不指明任何权限,则默认同一包中的类可以访问
运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大!
class Grandparent{ public Grandparent(){ System.out.println("Grandparent Created."); } public Grandparent(String string){ System.out.println("Grandparent Created.String:"+string); } } class Parent extends Grandparent{ public Parent(){ super("685865"); System.out.println("Parent Created"); } } class Child extends Parent{ public Child(){ System.out.println("Child Created"); } } public class Text { public static void main(String[] args) { } }
显示结果:
加入超类:
不允许继承的类
以final声明的方法不允许覆盖。
以final声明的变量不允许更改。
利用final,可以设计出一种特殊的“只读” 的“不可变类”。
子类与父类方法间的关系
扩充(Extends):子类定义的方法父类没有同名
覆盖/重写(Override):子类父类定义了完全一样的方法
重载(Overloads):子类有父类的同名方法,但两者的参数类型或参数数目不一样
注意最后一句,一个字串和一个对象“相加”,得到以下结果:
在“+”运算中,当任何一个对象与一个String对象,连接时,会隐式地调用其toString()方法,默认情况下,此方法返回“类名 @ + hashCode”。为了返回有意义的信息,子类可以重写toString()方法。
方法覆盖要求子类与父类的方法一模一样,否则就是方法重载(overload)!
Java“方法覆盖”的语法规则
(1)覆盖方法的允许访问范围不能小于原方法。
(2)覆盖方法所抛出的异常不能比原方法更多。
(3)声明为final方法不允许覆盖。
例如,Object的getClass()方法不能覆盖。
(4)不能覆盖静态方法。
有abstract修饰的类称为“抽象类”,它只定义了什么方法应该存在,不能创建对象,
必须派生出一个子类,并在子类中实现其未实现的方法之后,才能使用new关键字创建对象。
在方法前加上abstract就形成抽象方法,只有方法声明,没有实现代码
抽象类的三种“类型”
直接定义了一个抽象方法
继承了一个抽象父类,但没有完全实现父类包含的抽象方法
实现了一个接口,但没有完全实现此接口所包容的抽象方法。
抽象类 抽象类变量 = new 派生自抽象类的具体子类();
标签:ml2 ctr got ued ota load 调用 mdi qbc
原文地址:http://www.cnblogs.com/b-l-java/p/6055282.html