好公司的网站设计,wordpress生成海报,网页百度网盘,服装公司网站建设开题报告我们知道面向对象的三大特性是封装、继承和多态。然而我们有时候总是搞不清楚这些概念。下面对这些概念进行整理#xff0c;为以后面向抽象的编程打下坚实的基础。封装的概念还是很容易理解的。如果你会定义类#xff0c;那么相信你对封装的概念已经完全掌握了。下面定义的几…我们知道面向对象的三大特性是封装、继承和多态。然而我们有时候总是搞不清楚这些概念。下面对这些概念进行整理为以后面向抽象的编程打下坚实的基础。封装的概念还是很容易理解的。如果你会定义类那么相信你对封装的概念已经完全掌握了。下面定义的几个类就是对数据的封装。继承的好处是代码复用。继承的子类自动拥有父类中的所有属性和方法。所以继承已存在的类就是复用这些类的方法和域。在此基础上子类还可以添加一些新的方法和域以满足新的需求。这是Java程序设计中的一项核心技术。那么如何判断是否需要继承呢is-a关系是继承的一个明显特征。这句话的意思可以解释为Student之所以继承Person是因为Student 是Person。如果没有这个关系也就不需要这个继承了。这也是里氏替换原则的定义子类型必须能够替换掉它们的父类型。在通过扩展超类定义子类的时候仅需指出子类与超类的不同之处。因此在设计类时应该将通用的方法放到超类中而将具有特殊用途的方法放到子类中这种将通用的功能放到超类的做法在面向对象程序设计中十分普遍。动态绑定有一个非常重要的特性无需对现存的代码进行修改就可以对程序进行扩展。所以多态是开放封闭原则的基础。下面是一个继承和多态实现的具体例子abstract 是抽象的关键字。(最好从抽象类继承而不是从具体类继承)。public abstract class Person { //抽象类private String name; //私有变量public String getName() { //Getter方法returnname;}public void setName(String name) { //Setter方法this.name name;}public Person(String name) { //构造函数用于初始化namesuper();this.name name;}public abstract String getDesc(); //抽象类中的抽象方法。 只有声明没有具体实现。public String toString(){ // toString方法覆盖了Object类的toString方法return name getDesc();}}extends 是继承的关键字。Student继承Person所以Student拥有name属性。public class Student extends Person { //继承类private String major; //新增加的数据publicString getMajor() {returnmajor;}public voidsetMajor(String major) {this.major major;}public Student(String name,String major) { //构造函数用于初始化super(name); //调用超类构造函数this.major major;}Overridepublic String getDesc() { //必须实现超类中的抽象方法//TODO Auto-generated method stubreturn : a student, major is major;}凡是继承超类的子类必须实现(无论是哪种实现方式)超类中定义的抽象方法。public class Employee extendsPerson{private doublesalary;public doublegetSalary() {returnsalary;}public void setSalary(doublesalary) {this.salary salary;}public Employee(String name, doublesalary) {super(name);this.salary salary;}OverridepublicString getDesc() {//TODO Auto-generated method stubreturn :a employee, salary is salary;}}public classTest {public static voidmain(String[] args) {//TODO Auto-generated method stubPerson[] pnew Person[2];p[0]new Student(Mark, IT);p[1]new Employee(Jerry, 2000);for(Person person : p) {System.out.println(person.getName()person.getDesc());}}}结果从这个例子也可以看出没有封装就谈不上继承而没有继承就不可能有所谓的多态。而理解封装、继承和多态(特别是多态)是理解设计模式的基础。