JavaSE_4_面向对象编程(下)

上传人:飞*** 文档编号:4857661 上传时间:2017-08-06 格式:PPT 页数:33 大小:5.81MB
返回 下载 相关 举报
JavaSE_4_面向对象编程(下)_第1页
第1页 / 共33页
JavaSE_4_面向对象编程(下)_第2页
第2页 / 共33页
JavaSE_4_面向对象编程(下)_第3页
第3页 / 共33页
JavaSE_4_面向对象编程(下)_第4页
第4页 / 共33页
JavaSE_4_面向对象编程(下)_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《JavaSE_4_面向对象编程(下)》由会员分享,可在线阅读,更多相关《JavaSE_4_面向对象编程(下)(33页珍藏版)》请在金锄头文库上搜索。

1、JavaSE,Java面向对象编程(下),目标,类的继承super关键字访问控制方法的重写(override) Object类final关键字对象的多态性向上转型UpCasting/向下转型downCasting动态绑定抽象类接口,Java高端培训,OOP的三大特征,面向对象编程的三大特征:封装继承多态,Java高端培训,继承,继承关系:两个类之间是“is-a”(是一个)的关系。继承的特点:子类继承了超类(父类,基类)的所有属性和方法(但不包括构造方法),并且可以为自己增添新的属性和方法。继承可提高代码的重用性,使用extends关键字来实现。Java只支持单继承:即一个子类只能有一个超类。但

2、一个超类可以派生出多个子类。,Java高端培训,示例,Java高端培训,class Employee private String name; /姓名 private int age; /年龄 private double salary = 2000.0; /薪水 public Employee(String name, int age, double salary) this.name = name; this.age = age; this.salary = salary; public Employee() public double getSalary() return salary;

3、 class Manager extends Employee private double bonus; /奖金 public void setBonus(double bonus) this.bonus = bonus; public class TestInheritance public static void main(String args) Manager manager = new Manager(); manager.getSalary(); ,内存分析,super,调用子类构造方法构造一个对象时:会先调用超类构造方法对超类的属性进行初始化,然后才调用自己的构造方法对自己的属

4、性来进行初始化如果子类构造方法没有显式调用超类构造方法,那么会调用超类的默认构造方法。如果超类没有默认构造方法,而且子类构造方法又没有显示调用超类的其它构造方法,那么编译将报错。若要在子类构造方法中调用超类构造方法,则在子类构造方法的第一条语句用关键字 super来调用。 语法为:super() ; /显式调用超类的无参构造方法super(实参列表) ; /显式调用超类的带参构造方法,Java高端培训,示例,Java高端培训,class Employee private String name; /姓名 private int age; /年龄 private double salary =

5、2000.0; /薪水 public Employee(String name, int age, double salary) this.name = name; this.age = age; this.salary = salary; public Employee() public double getSalary() return salary; public void displayInfo() System.out.println(“name=” + name + “,age=” + age); class Manager extends Employee private dou

6、ble bonus; /奖金 private String position; /职位 public Manager(String name, int age, double salary, String position) super(name, age, salary); this.position = position; public void setBonus(double bonus) this.bonus = bonus; ,super的第二种用法,super还可用来调用超类的普通方法。语法:super.方法名(实参列表);,Java高端培训,class Employee publ

7、ic void displayInfo() System.out.println(“name=” + name + “,age=” + age); class Manager extends Employee private double bonus; /奖金 private String position; /职位 public Manager(String name, int age, double salary, String position) super(name, age, salary); this.position = position; super.displayInfo()

8、; public void setBonus(double bonus) this.bonus = bonus; ,目标,类的继承访问控制方法的重写(override) Object类final关键字对象的多态性向上转型UpCasting/向下转型downCasting动态绑定抽象类接口,Java高端培训,访问修饰符可访问性,这些修饰符可以修饰类、成员变量、方法private: 本类可见 (经常用来修饰类中的属性)默认:本类、本包可见 (不建议使用)protected:对本类、所有子类和本包可见 (用法特殊)public:对一切可见 (经常用来修饰类,修饰类中的方法)对于类的访问修饰,只可以是

9、public 或 默认 的。,Java高端培训,示例,Java高端培训,class T private int i = 10;int j = 100;protected int k = 1000;public int m = 100000;public class TestAccesspublic static void main(String args) T t = new T();System.out.println(t.i);System.out.println(t.j);System.out.println(t.k);System.out.println(t.m);,目标,类的继承访问

10、控制方法的重写(override) Object类final关键字对象的多态性向上转型UpCasting/向下转型downCasting动态绑定抽象类接口,Java高端培训,方法的重写(override),在子类中可以根据需要对从超类中继承来的方法进行重写。重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型重写方法不能使用比被重写方法更严格的访问权限,Java高端培训,示例,Java高端培训,class Employee private String name; /姓名 private int age; /年龄 private double salary = 2000.0; /薪

11、水 public Employee(String name, int age, double salary) this.name = name; this.age = age; this.salary = salary; public double getSalary() return salary; class Manager extends Employee private double bonus; /奖金 private String position; /职位 public Manager(String name, int age, double salary, String pos

12、ition) super(name, age, salary); this.position = position; public void setBonus(double bonus) this.bonus = bonus; public double getSalary() return super.getSalary() + bonus; ,目标,类的继承访问控制方法的重写(override) Object类final关键字对象的多态性向上转型UpCasting/向下转型downCasting动态绑定抽象类接口,Java高端培训,Object类,java.lang.Object类是所有J

13、ava类的根类如果在类的声明中末使用extends关键字指定父类,则默认为继承自Object类查询JDK API 中Object类的说明toString():返回代表该对象值的字符串。Object类中返回的串是 “类名内存地址的十六进制整数值”建议在自定义类中重写equals(Object obj):测试其他某个对象是否与此对象“相等”Object类中是通过判断两个对象是否指向同一块内存区域建议在自定义类中重写hashCode():返回该对象的哈希码值在重写equals()方法时,建议同时重写hashCode()方法,因为在某些场合需要比较两个对象是否为相同的对象时,会调用到这两个方法来判断,Java高端培训,示例,Java高端培训,public class TestObject public static void main(String args) TestObject obj = new TestObject(); System.out.println(obj.toString(); System.out.println(obj.hashCode(); TestObject obj2 = new TestObject(); System.out.println(obj.equals(obj2); ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号