继承,接口,抽象类
2008-09-16 19:06
239 查看
1. 封装(数据隐藏的具体方法)
隐藏类的实现细节,迫使用户去使用一个接口去访问数据使代码更好维护
private,本类可见,可用。
public,所有的可见
protected,继承关系的子类和本包可见
无修饰的(friendly)本包可见(package)
防止继承:final 的类和方法
不可扩展的类称作final类
final方法的作用:
高效率
安全
2. super & this
super的两个使用方法:
对超类方法的调用;
对超类构造函数的调用
this的使用方法:
对本身方法的调用;
对本身其他构造函数的调用
3. 重载 & 覆盖
重载的概念:
拥有相同的方法名,通过其他的方式,在同一个作用域工作
返回值重载
参数重载
构造函数的重载
普通方法重载
方法的覆盖:
子类中返回值和参数相同的方法将覆盖超类的方法
相同名称,不同参数的被“简单覆盖”编译器将使用参数来决定具体所指。
方法重写(override):子类继承父类,并在子类中定义一个与父类中的方法名称和参数都相同的方法(返回类型可以不同),就会覆盖父类中的方法,这就是方法重写,并且“重写”只有在类继承的时候才会发生。
方法重载(overload):同一个类中有两个或两个以上的方法,方法名相同,参数列表不同,就构成方法重载。同时有继承关系的类,子类也可以重载父类的方法。
函数名一样 参数列表一样 只有返回值不一样 java编译系统仍会识别为是一个函数而报错
重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,
然后这些同名函数就成了不同的函数
1、在同一个类中;
2、方法名相同;
3、参数个数或者参数类型不同【如果参数类型和个数相同,但类型顺序不同也是重载】
(例:void overl(String s,double d) 和void overl(double d,String s)也是重载 )
4、与返回类型无关
Java的单继承性(不支持多重继承,需要的时候用接口来实现)
构造函数不能被继承
4. 抽象类
只给出方法头,而不必给出方法体。即方法的具体实现。
可以在方法和类名前面加上abstract关键字,表示这是一个抽象类。
抽象类中可以没有抽象方法,但类中有抽象方法,类必须声明为抽象类型。
抽象类可以有具体方法。
抽象类不能被实例化,就是不能创建对象。
继承抽象类的子类必须重写抽象类中的所有抽象方法。
5.接口
接口(interface)是抽象方法和常量值的定义的集合
只包含常量和方法的定义,而没有变量的方法的实现。可看作是特殊的抽象类。
接口中定义的属性必须是public statc final的
接口中定义的方法必须是public abstract的,
因此这些修饰符可以部分或全部省略。因为不写也会自动添加这些修饰符
接口可以被多重实现
接口可以继承其他接口,并添加新的属性和抽象方法
接口间支持多重继承,类只能单继承(父类)多重实现(接口)
interface A{ public void fa();}
interface B{ public void fb(); }
interface C extends a,b{ public void fc(); }
class D impliments C{
public void fa(){...}
public void fb(){...}
public void fc(){...}
}
隐藏类的实现细节,迫使用户去使用一个接口去访问数据使代码更好维护
private,本类可见,可用。
public,所有的可见
protected,继承关系的子类和本包可见
无修饰的(friendly)本包可见(package)
防止继承:final 的类和方法
不可扩展的类称作final类
final方法的作用:
高效率
安全
2. super & this
super的两个使用方法:
对超类方法的调用;
对超类构造函数的调用
this的使用方法:
对本身方法的调用;
对本身其他构造函数的调用
3. 重载 & 覆盖
重载的概念:
拥有相同的方法名,通过其他的方式,在同一个作用域工作
返回值重载
参数重载
构造函数的重载
普通方法重载
方法的覆盖:
子类中返回值和参数相同的方法将覆盖超类的方法
相同名称,不同参数的被“简单覆盖”编译器将使用参数来决定具体所指。
方法重写(override):子类继承父类,并在子类中定义一个与父类中的方法名称和参数都相同的方法(返回类型可以不同),就会覆盖父类中的方法,这就是方法重写,并且“重写”只有在类继承的时候才会发生。
方法重载(overload):同一个类中有两个或两个以上的方法,方法名相同,参数列表不同,就构成方法重载。同时有继承关系的类,子类也可以重载父类的方法。
函数名一样 参数列表一样 只有返回值不一样 java编译系统仍会识别为是一个函数而报错
重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,
然后这些同名函数就成了不同的函数
1、在同一个类中;
2、方法名相同;
3、参数个数或者参数类型不同【如果参数类型和个数相同,但类型顺序不同也是重载】
(例:void overl(String s,double d) 和void overl(double d,String s)也是重载 )
4、与返回类型无关
Java的单继承性(不支持多重继承,需要的时候用接口来实现)
构造函数不能被继承
4. 抽象类
只给出方法头,而不必给出方法体。即方法的具体实现。
可以在方法和类名前面加上abstract关键字,表示这是一个抽象类。
抽象类中可以没有抽象方法,但类中有抽象方法,类必须声明为抽象类型。
抽象类可以有具体方法。
抽象类不能被实例化,就是不能创建对象。
继承抽象类的子类必须重写抽象类中的所有抽象方法。
5.接口
接口(interface)是抽象方法和常量值的定义的集合
只包含常量和方法的定义,而没有变量的方法的实现。可看作是特殊的抽象类。
接口中定义的属性必须是public statc final的
接口中定义的方法必须是public abstract的,
因此这些修饰符可以部分或全部省略。因为不写也会自动添加这些修饰符
接口可以被多重实现
接口可以继承其他接口,并添加新的属性和抽象方法
接口间支持多重继承,类只能单继承(父类)多重实现(接口)
interface A{ public void fa();}
interface B{ public void fb(); }
interface C extends a,b{ public void fc(); }
class D impliments C{
public void fa(){...}
public void fb(){...}
public void fc(){...}
}
相关文章推荐
- 黑马程序员——Java语言基础:继承、抽象类、接口
- Java基础-继承、抽象类、接口
- 黑马程序员--继承、抽象类、接口
- Java基础(面向对象三——继承、final关键字、抽象类、接口)
- 黑马程序员--java基础复习继承之抽象类与接口
- 黑马程序员—JAVA基础之继承、抽象类、接口
- 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
- 继承、接口、虚方法、抽象类
- python基础之继承派生、组合、接口和抽象类
- 接口和抽象类的继承和实现
- java笔记(三)[java中的继承&java中的方法重载,重写,重构&java中的向上转型和乡下转型&java中的抽象类和接口&java中的接口向上转型]
- 黑马程序员_面向对象二(继承,多态,抽象类abstract,接口Interface,内部类)
- day07继承, final修饰 ,抽象类,接口
- 抽象类与接口之间的继承和实现关系
- 黑马程序员-java学习继承之抽象类、多态和接口
- 一次性理清java 中的 类、抽象类、接口、继承、对象
- Java基础——接口的继承与抽象类
- 接口与抽象类的继承
- 第10章 接口、继承与多态----抽象类和接口
- 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类