Java 面向对象的三大特性
封装
封装通常基于4种访问修饰符来实现:缺省、private、public和protected
假如我们想描述人的属性,可以把人的相关属性name,age...封装成一个人类,属于类层次的封装,用一组相关属性描述一类东西.
public class Teacher{ //老师类
public String name;//老师的名字
public Family family;//家庭类
List<Student> students;//老师名下的学生集合
}
一般情况下,这样的数据封装还不够,我们还需要限制访问权限
成员变量的封装
class Bank{
private String money;//存款数目
public String getMoney() {
return money;//银行人员执行取款操作
}
public void setMoney(String money) {
this.money = money;//银行人员执行存款操作
}
}
成员方法的封装:
/**
* @author QinGuan
* @date:2016-3-1 上午10:39:40
* @version :3.0
*
*/
package com.cloneTest;
public class vocation implements Cloneable{
public String name;
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
public void setLoad(){
getLoad();//调用类中私有方法
}
private void getLoad(){ //此方法被封装,仅仅可以内部方法调用
System.out.println("load");
}
}
以上的封装是在属性和方法的层次上,还有一种更加有意思的封装形式是内部类,规则是:
成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员), 这个规则结合继承,就巧妙的解决了Java单继承的问题:
public class External extends Father {
private String Exname;
//内部类
class internal {
private String inname;
public void print() {
System.out.println(Exname);
fatherPrint();//可以直接访问Father类的打印方法
}
}
public void get() {
System.out.println(internal.class);
}
public String getExname() {
return Exname;
}
public void setExname(String exname) {
Exname = exname;
}
}
继承
Java中的继承通过关键字 extends 实现,子类继承父类全部内容,但是可访问的内容仅仅限于非 private 修饰的内容.
子类在实例化的时候,默认先调用父类的无参构造方法,所以父类一般会提供一个无参的构造方法以供子类调用,当然了,子类也可以通过 super(参数列表);来指定调用的父类构造方法
public class Father {
public String name;
Father() {
}
Father(String name) {
this.name = name;
}
public class Son extends Father {
private String name;
Son (String name){
super(name);//调用父类的有参构造方法
}
多态
在继承的基础上的实现,父类的变量指向子类实例化的内容
参考资料:http://blog.youkuaiyun.com/thinkGhoster/archive/2008/04/19/2307001.aspx。
百度文库:http://wenku.baidu.com/view/73f66f92daef5ef7ba0d3c03.html
方法的重写和重载
重载,属于同一个类中的方法,方法名一样,参数列表不同,返回值类型可以相同也可以不相同。
重写,子类对继承自父类的方法进行重新实现.相同的方法签名,相同的返回值,不小于父类方法的访问权限
转载于:https://blog.51cto.com/11083953/1732817