您的位置:首页 > 编程语言 > Java开发

Java 面向对象理解

2016-01-08 11:42 453 查看
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.csdn.net/thinkGhoster/archive/2008/04/19/2307001.aspx。 百度文库:http://wenku.baidu.com/view/73f66f92daef5ef7ba0d3c03.html方法的重写和重载
重载,属于同一个类中的方法,方法名一样,参数列表不同,返回值类型可以相同也可以不相同。
重写,子类对继承自父类的方法进行重新实现.相同的方法签名,相同的返回值,不小于父类方法的访问权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java family public