|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622 。
您需要 登录 才可以下载或查看,没有帐号?注册
x
一 变量 ,IP电话
子类与父类呈现同名时,则子类隐蔽父类的同名成员变量(子类与父类变量的类型可以不一样,充电机,父类的final或static润饰的变量也可以被隐躲)
二 成员方法
1、方法继承:应用extends要害字一个方法继承另一个方法,而且只能直接继承一个类,商标注册。
当Sub类和Base类在同一个包时Sub类继续Base类中的public/protected/默认级别的变量个方法
在不同包时继承public/protected级别的变量和方法。
2、方法重载:假如有两个方法的方法名相同但参数不一致(必需的),java培训,叫方法的重载:
方法名相同
方式的参数类型,个数次序至少有一项不同
方法的返回类型可以不相同
方法的润饰符可以不相同
main方法也可以被重载
结构方法也可以被重载
3、方法覆盖:如果在子类中定义一个方法,北京网络电话,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,电抗器,那么可以说,子类的方法覆盖了父类的方法。
子类的返回类型与方法签名(名字与参数列表)必须与父类的一致
子类方法不能缩小父类方法的拜访权限
子类办法不能抛出比父类方法更多的异常,且子类抛出的异常必需与父类抛出的异常雷同或者是父类抛出异常的子类
方法笼罩只存在于子类和父类之间,同一个类中只能重载
子类可以定义于父类的静态方法同名的静态方法,以便在子类中暗藏父类的静态方法(满足覆盖束缚),
而且Java虚拟机把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。
父类的非静态方法不能被子类覆盖为静态方法
父类的静态方法不能被子类覆盖为非静态方法
父类的静态方式能被子类的静态办法"覆盖"(此时叫暗藏,性质与笼罩完整不一样)见后面例子
父类的私有方法不能被子类覆盖(但是不会出错,由于子类基本没有继承父类的私有方法)
父类的final方法不能被子类覆盖
父类的抽象方法可以被子类通过两种道路覆盖(即实现和覆盖)
父类的非抽象方法可以被笼罩为抽象方法
4、Super要害字:super和this症结字都可以用来覆盖Java语言的默认作用域,使被屏蔽的方法或变量变为可见(三种情形下的不可见P171)。
父类的成员变量和方法为private使用super访问编译出错
在类的构造方法种,通过super语句调用这个类的父类的构造方法
在子类种访问父类的被屏蔽的方法和属性
只能在结构方法或实例方法内应用super要害字,而在静态方法和静态代码块内不能应用super
5、多态:
对于一个引用类型的变量,Java编译器依照它的声明的类型来处置
对于一个引用类型的变量,运行时Java虚拟机依照它的实际引用的对象来处置
运行时环境中,通过引用类型变量来拜访所引用对象的方法和属性时,Java虚拟机采取以下绑定规矩
1)实例方法与引用变量实际引用的对象的方法绑定,属于动态绑定
2)静态方法与引用变量所声明的类型的方法绑定,属于静态绑定
3)成员变量(包含静态和实例变量)与引用变量所声明的类型的成员变量绑定,属于静态绑定
6、继续的利弊和应用原则:
集成数的层次不可太多
集成数的上层为抽象层
(1)定义了下层子类都用友的相同属性和方法,并且尽可能默认实现,从而进步重用性
(2)代表体系的接口,描写体系所能供给的服务
继承关系最大的弱点:打破封装
精心设计专门用于被继承的类
(1)对这些类必须供给良好的文档阐明
(2)尽可能的封装父类的实现细节,把代表时光细节的属性和方法定义为private类型
(3)假如某些实现细节必需被子类拜访,定义为protected类型
(4)把不容许子类覆盖的方法定义为final类型
(5)父类的结构方法不容许调用可被子类覆盖的方法
(6)假如某些类不是专门为了继承而设计,那么随便继续它是不安全的
方法的隐蔽例子:
import java.io.*;
class father {
static void fun(){
System.out.println("father");
}
}
class son extends father
{
tatic void fun(){
System.out.println("son");
}
}
public class TestMember{
public static void main(String[] args) {
father s=new son();
s.fun();
//输出:father
}
}
方法的覆盖例子(实现多态)
import java.io.*;
class father {
final static String name="father";
void fun(){
System.out.println("father");
}
}
class son extends father
{
//String name="son";
private int name=90;
void fun(){
System.out.println("son");
}
}
public class TestMember{
public static void main(String[] args) {
father s=new son();
s.fun();
//输出:son
}
}
总结
实例方法:子类与父类相同返回类型与相同签名叫覆盖,调用实例对象的方法(运行时指向随就调用谁的方法),是实现运行时多态的基本.
类方式:(static润饰的)子类与父类雷同返回类型与雷同签名叫暗藏,不管指向谁,调用的是声明类型的办法.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lillllllll/archive/2009/05/12 /4174301.aspx
发表于 @ 2009年07月08日 15:12:00 | 评论( loading...) | 举报| 珍藏
旧一篇:25条抚慰让你以一颗温和的心态面对世俗 |
|