JAVA零基础讲解ch004
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
能够确定
Generic=(Base) second; generic.operation();
Generic的实际类型是 Derved2,只有在运行时才
能够确定
4.3 继承的实现
定义子类:examplቤተ መጻሕፍቲ ባይዱ4_2 域的继承:子类可以继承父类所有非私有域 域的隐藏:在子类中重新定义一个与从父类
继承来的域变量完全相同的变量,称为域的 隐藏。
toString()方法
toString()返回一个字符串用于描述当前对象,返回的具体内容: 类名@对象的hash码十六进制表示Example4_7
散列(hash)是一种算法,它会从目标对象中提取一些信息,然后生 成一个表示这个对象的相对独立的int值。
hashCode()是Object根类的方法,因此所有的java对象都能生成hash code。其所产生的Hash数就是对象的内存地址。
}
4.1继承
什么是方法的覆盖? 在子类中重新定义父类中已有的方法。
class Car { int color_number;
int door_number; public int speed;
public push_break() { speed=0; }
add_oil() { … } }
class Trash_Car extends Car
JAVA零基础讲解ch004
4.1继承
什么是子类? 子类是作为另一个类的扩充或修正所定义
的一个类.
bicycle (super class)
sub class
Mountain bikes Racing bikes
Tandem bikes
4.1继承
• 继承是子类利用父类中定义的方法和变量就 像它们属于子类本身一样.
方法调用时,可以使用子类对象作为实际参数 如果父类对象引用指向的实际是一个子类对象,
那么这个父类对象的引用可以用强制类型转换转 化成子类对象的引用。
多态性的实例—类继承中实例对象的构造 顺序
谢谢
public void operation(){}; }
动态绑定
Derved1 first=new Derved1();
Derved2 second=new Derved2();
Base generic; generic=(Base) first; generic.operation();
Generic的实际类型是 Derved1,只有在运行时才
class Car { int color_number;
int door_number; int speed;
push_break() { … } add_oil() { … } }
class Trash_Car extends Car
{ double amount;
fill_trash() { … }
{ double amount;
fill_trash() { … } push_break(); { speed=speed-10; }
}
4.1继承
类声明P70:
[类修饰符] class 类名 [extends 父类名] [implements 接口列表]
{ 数据成员
成员方法
}
子类可以继承父类中访问权限设定为public protected, friendly 的成员变量和方法
静态绑定:编译时完成的绑定 动态绑定:编译时不能完成,在执行时绑定。 例如:当包含强制类型转换和继承时,在调用方
法时执行的实际代码可能依赖于实际对象的类, 而这样的类在编译时可能是未知的。
动态绑定
Public class Base{ public void operation(){};
} Public class Derived1 extends Base{ } Public class Derved2 extends Base{
4.2继承的使用-属性和方法的继承
一个父类可以有多个子类 每个子类最多只能有一个父类 子类可以共享父类的公共域和方法
继承
若在逻辑上B是A的“一种”,并且A的所有功能和属性对B而 言都有意义,则允许B继承A的功能和属性。
例如,教师是人,Teacher 是Person的“一种”(a kind
其他类型的数据与字符串进行"+"运算时,将自动转换成字符串
equals()
用于比较当前对象与参数传递过来的对象 是否相等 example4_8
String 类改写了equals,example4_9比较 字符串是否相等equals() 与 ==
Object 与其他类型的转换
子类对象可以被视为其父类的一个对象 父类对象不能被当作是其某一个子类的对象 如果一个方法的形式参数定义的是父类对象,在
of ),那么类Teacher可以从类Person派生(继承)。
继承
移动电话
电话类
电话号码 剩余金额 查询余额 计费方式
固定电话
入网方式 计费方式
普通手机
小灵通
计费方式
计费方式
座机费 计费方式
普通电话
是否开通国际长途 是否开通国内长途
计费方式
IP电话
是否已启用失效日期 计费方式
动态绑定
绑定:一种动作,对应于某一特定的调用选择执 行哪个方法。
当子类执行它自己定义的方法时,处理的是自定 义的变量;当子类执行继承自父类的方法时,处 理的是继承自父类变量。
继承的实现
方法的继承 方法的覆盖
继承的实现
X,Y Getxy() Area()
X,Y Area() Draw()
隐藏 覆盖
4.4 如何防止继承
final class
4.5 强制类型转换
BaseClass baseobject; DerivedClass derivedobject=new DerivedClass(); Baseobject=derivedobject;
4.6 多态
多态性是指同名的不同方法在程序中共享,即为 同一个方法定义几个版本,运行时根据不同情况 执行不同的版本。
强制类型转换是指将派生类的对象视作其 基类的对象
在需要基类对象的场合使用派生类对象 类型强制转换并没有改变对象,只是通过
类型强制转换来改变对象的哪些部分是可 见的。
强制类型转换
F() G() U() V() W()
useful moreuseful
隐式类型强制转换
当将对象作为参数来赋值或传递没有显式 的类型强制转换时,出现隐式的类型强制 转换
toString()方法会在使用“+”时,把一个对象与String类型的变量连接 时自动调用。
其他类型的数据与字符串进行"+"运算时,将自动转换成字符串。具体 过程如下: String s = "He is "+age+" years old."; 具体过程如下: String s=new StringBuffer("he is").append(age).append("years old").toString();
一个名字,多个方法 多态性的实现:
覆盖实现多态(子类重写父类中的方法)example4_5 重载实现多态(同一个类中的同名方法)example4_6
4.7Object类
Object类是Java类库中一个特殊的类,它是 类库中所有类的父类,也是用户自定义的所 有类的直接或者间接父类。
也称作通用超类 成员方法: toString() equals()
Generic=(Base) second; generic.operation();
Generic的实际类型是 Derved2,只有在运行时才
能够确定
4.3 继承的实现
定义子类:examplቤተ መጻሕፍቲ ባይዱ4_2 域的继承:子类可以继承父类所有非私有域 域的隐藏:在子类中重新定义一个与从父类
继承来的域变量完全相同的变量,称为域的 隐藏。
toString()方法
toString()返回一个字符串用于描述当前对象,返回的具体内容: 类名@对象的hash码十六进制表示Example4_7
散列(hash)是一种算法,它会从目标对象中提取一些信息,然后生 成一个表示这个对象的相对独立的int值。
hashCode()是Object根类的方法,因此所有的java对象都能生成hash code。其所产生的Hash数就是对象的内存地址。
}
4.1继承
什么是方法的覆盖? 在子类中重新定义父类中已有的方法。
class Car { int color_number;
int door_number; public int speed;
public push_break() { speed=0; }
add_oil() { … } }
class Trash_Car extends Car
JAVA零基础讲解ch004
4.1继承
什么是子类? 子类是作为另一个类的扩充或修正所定义
的一个类.
bicycle (super class)
sub class
Mountain bikes Racing bikes
Tandem bikes
4.1继承
• 继承是子类利用父类中定义的方法和变量就 像它们属于子类本身一样.
方法调用时,可以使用子类对象作为实际参数 如果父类对象引用指向的实际是一个子类对象,
那么这个父类对象的引用可以用强制类型转换转 化成子类对象的引用。
多态性的实例—类继承中实例对象的构造 顺序
谢谢
public void operation(){}; }
动态绑定
Derved1 first=new Derved1();
Derved2 second=new Derved2();
Base generic; generic=(Base) first; generic.operation();
Generic的实际类型是 Derved1,只有在运行时才
class Car { int color_number;
int door_number; int speed;
push_break() { … } add_oil() { … } }
class Trash_Car extends Car
{ double amount;
fill_trash() { … }
{ double amount;
fill_trash() { … } push_break(); { speed=speed-10; }
}
4.1继承
类声明P70:
[类修饰符] class 类名 [extends 父类名] [implements 接口列表]
{ 数据成员
成员方法
}
子类可以继承父类中访问权限设定为public protected, friendly 的成员变量和方法
静态绑定:编译时完成的绑定 动态绑定:编译时不能完成,在执行时绑定。 例如:当包含强制类型转换和继承时,在调用方
法时执行的实际代码可能依赖于实际对象的类, 而这样的类在编译时可能是未知的。
动态绑定
Public class Base{ public void operation(){};
} Public class Derived1 extends Base{ } Public class Derved2 extends Base{
4.2继承的使用-属性和方法的继承
一个父类可以有多个子类 每个子类最多只能有一个父类 子类可以共享父类的公共域和方法
继承
若在逻辑上B是A的“一种”,并且A的所有功能和属性对B而 言都有意义,则允许B继承A的功能和属性。
例如,教师是人,Teacher 是Person的“一种”(a kind
其他类型的数据与字符串进行"+"运算时,将自动转换成字符串
equals()
用于比较当前对象与参数传递过来的对象 是否相等 example4_8
String 类改写了equals,example4_9比较 字符串是否相等equals() 与 ==
Object 与其他类型的转换
子类对象可以被视为其父类的一个对象 父类对象不能被当作是其某一个子类的对象 如果一个方法的形式参数定义的是父类对象,在
of ),那么类Teacher可以从类Person派生(继承)。
继承
移动电话
电话类
电话号码 剩余金额 查询余额 计费方式
固定电话
入网方式 计费方式
普通手机
小灵通
计费方式
计费方式
座机费 计费方式
普通电话
是否开通国际长途 是否开通国内长途
计费方式
IP电话
是否已启用失效日期 计费方式
动态绑定
绑定:一种动作,对应于某一特定的调用选择执 行哪个方法。
当子类执行它自己定义的方法时,处理的是自定 义的变量;当子类执行继承自父类的方法时,处 理的是继承自父类变量。
继承的实现
方法的继承 方法的覆盖
继承的实现
X,Y Getxy() Area()
X,Y Area() Draw()
隐藏 覆盖
4.4 如何防止继承
final class
4.5 强制类型转换
BaseClass baseobject; DerivedClass derivedobject=new DerivedClass(); Baseobject=derivedobject;
4.6 多态
多态性是指同名的不同方法在程序中共享,即为 同一个方法定义几个版本,运行时根据不同情况 执行不同的版本。
强制类型转换是指将派生类的对象视作其 基类的对象
在需要基类对象的场合使用派生类对象 类型强制转换并没有改变对象,只是通过
类型强制转换来改变对象的哪些部分是可 见的。
强制类型转换
F() G() U() V() W()
useful moreuseful
隐式类型强制转换
当将对象作为参数来赋值或传递没有显式 的类型强制转换时,出现隐式的类型强制 转换
toString()方法会在使用“+”时,把一个对象与String类型的变量连接 时自动调用。
其他类型的数据与字符串进行"+"运算时,将自动转换成字符串。具体 过程如下: String s = "He is "+age+" years old."; 具体过程如下: String s=new StringBuffer("he is").append(age).append("years old").toString();
一个名字,多个方法 多态性的实现:
覆盖实现多态(子类重写父类中的方法)example4_5 重载实现多态(同一个类中的同名方法)example4_6
4.7Object类
Object类是Java类库中一个特殊的类,它是 类库中所有类的父类,也是用户自定义的所 有类的直接或者间接父类。
也称作通用超类 成员方法: toString() equals()