1.类的继承

通过继承可以简化类的定义。

java只支持单继承。不过可以这样,B继承A,C又继承B,那么C就间接的继承了A。

子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法。在子类的构造方法中可以使用语句super(参数列表)调用父类的构造方法。

Person类(父类)

public class Person {

public String name;

public int age;

public Person(String name, int age) {

this.name = name;

this.age = age;

}

public void getInfo(){

System.out.println("name="+name+" "+"age="+age);

}

}

Student类(子类)

public class Student extends Person {

private String school;

public Student(){

super("zhangsan",15);

}

public void study(){

}

}

如果子类的构造方法中没有显式地调用父类的构造方法,也没有使用this关键字调用重载的其它构造方法,则在产生子类的实例对象时,系统默认调用父类无参数的构造方法。


2.重写父类的方法(覆盖)

重写方法必须和被重写具有相同的方法名称、参数列表和返回值类型。

如果在子类中想调用父类中的那个被覆盖的方法,可以用super.方法名的格式。super.getInfo();

覆盖方法时,不能使用比父类中被覆盖的方法更严格的访问权限。也就是说只能更开放。


3.final关键字

final 放在类前面

如果某个类在定义时,前面有修饰词final,则该类不能被继承。

final 放在变量前面

变量(成员或局部变量)声明时,如果前面有修饰词final关键字,则该属性值不能被更改,即此时该属性为常量,只能赋值一次。

final放在方法前面

如果某个方法在定义时,前面有修饰词final,该方法可以被调用,不能被子类重写。

public static final共同标记一个常量时,这个常量就成了全局的常量。


4.抽象类

java中可以定义一些不含方法体的方法,它的方法实现交给该类的子类根据自身的情况去实现,这样的方法叫抽象方法,包含抽象方法的类就是抽象类。

抽象类必须用abstract关键字来修饰;抽象方法也必须用abstract来修饰。

抽象类不能被实例化,也就是不能用new关键字去产生对象。

抽象类中的抽象方法只需要声明,不需要实现。(感觉跟接口差不多)

含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。


5.接口(interface)

如果一个抽象类中的所有方法都是抽象的,我们可以将这个类用另一种方式来定义,也就是接口定义。

接口是抽象方法和常量值得定义的集合,从本质上来说,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有常量和方法的实现。

接口中的成员都是public访问类型的。接口里面的变量默认都是用public static final标记的。(常量)

接口可以继承已有的一个接口。

我们的类可以用implements关键字去实现一个接口中的所有方法,我们可以定义一个抽象类用implements关键字去实现一个接口中定义的部分方法。

一个类可以继承一个类的同时实现一个或者多个接口。extends关键字必须位于implements关键字的前面。(张孝祥老师自己实验得知...)


面向对象的编程方法具有四个基本特征:

2015年9月27

1.抽象:


  抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察。


2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。这也体现了大自然中一般与特殊的关系。继承性很好的解决了软件的可重用性问题。比如说,所有的Windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的。但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。


3.封装:


  封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表示内部状态。在这个阶段定义对象的接口。通常,应禁止直接访问一个对象的实际表示,而应通过操作接口访问对象,这称为信息隐藏。事实上,信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。


4. 多态性:


  多态性是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。又比如,同样的选择编辑-粘贴操作,在字处理程序和绘图程序中有不同的效果。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。


面向对象程序设计具有许多优点: 


1、开发时间短,效率高,可靠性高,所开发的程序更强壮。由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间。


2、应用程序更易于维护、更新和升级。继承和封装使得应用程序的修改带来的影响更加局部化。


转载于:https://my.oschina.net/u/2473169/blog/512238

相关文章: