java面向对象编程 漫画_Java面向对象编程(一)

由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程。

面向对象编程的三大特性是:继承性(inheritance), 多态性(polymorphism)和封装性(encapsulation)。

一. 继承性

[类修饰词列表] class 类名 [extends 父类名] [implements 借口列表名] { 类体 }

class Employee {

public int workYear;

public Employee() { workYear = 1; }

}

class Teacher extends Employee {

public int classHour;

public Teacher() { classHour = 10; }

}

每一个类有且仅有一个直接父类,但能够实现多个接口

当前定义的类的构造方法必须在其第一句调用其直接父类的构造方法。格式为:

super(參数列表);

假设程序猿没有进行显式调用,则JVM会自己主动隐式调用不带不论什么參数的父类构造方法,即:super()

子类和父类之间能够进行类型转换

(1) 将子类型数据转换为父类型数据能够直接採用隐式类型转换

(2) 将父类型数据转换为子类型数据须要採用强制类型转换,且要保证执行时的正确性。

// correct

Teacher tom = new Teacher();

Employee a = tom;

Teacher b = (Teacher) a;

// runtime error

Employee a = new Employee();

Teacher b = (Teacher) a;

能够用instanceof 来推断一个对象是不是某个类的实例对象。Teacher a = new Teacher();

Employee b = new Employee();

Employee c = a;

System.out.println((b instanceof Teacher)); // false

System.out.println((c instanceof Employee)); // true

System.out.println((c instanceof Teacher)); // true

二. 多态性

静态多态性

静态多态性是指在同一个类中同名方法在功能上的重载(overload)。

动态多态性

动态多态性是指子类的成员方法对其父类同样声明的成员方法的覆盖(override)。这里的“同样声明”指的是除了方法修饰词外全然同样。利用动态多态性能够通过父类型的引用调用子类型的方法。

class Employee {

public int workYear;

public Employee() { workYear = 1; }

public printInfo() {

System.out.println("This employee has worked for " + workYear + " years.");

}

}

class Teacher extends Employee {

public int classHour;

public Teacher() { classHour = 10; }

public printInfo() {

System.out.println("This employee has worked for " + workYear + " years.");

System.out.println("This teacher has worked for " + classHour + " hours.");

}

}

public class Main {

public static void main(String[] args) {

Employee a = new Teacher();

a.printInfo();

}

}

在子类中定义与父类中同名的成员域不仅与多态性没有关系。并且不提倡

能够用superkeyword调用父类中被屏蔽的成员方法和成员域,即:super.xxx

动态多态性仅仅针对非静态的成员方法,即静态成员方法不具有动态多态性:当在子类和父类的类体中定义了具有全然同样声明的静态成员方法。且类型为父类的变量a指向子类的实例对象时,通过变量a调用该静态成员方法将调用在父类类体中定义的静态成员方法。

三. 封装性

这里主要须要搞清楚类成员的訪问控制模式及相应的訪问范围,例如以下表:

SouthEast

* 上述图片来自《Java程序设计教程》 第2版。雍俊海编著

至此,Java中面向对象的三大特性讨论完成,下一篇博客将会讨论抽象类、接口和内部类等内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值