三大特性
面向对象三大特性:封装、继承、多态
封装:
- 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐
藏信息的操作和访问
继承:
- 子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有),从而实现了实现代码的复
用
多态:
- 使用父类引用接受,不同的子类的对象实例,父类引用调用相同的方法,根据子类不同的实例,产生
不同的结果
封装(数据的隐藏)
在定义一个对象的特性的时候,有必要决定这些特性的可见性,即那些特性对外部是可见的,哪些特性
用于表示内部状态。
通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
封装的步骤
1.使用private修饰需要封装的成员变量
2.提供一个公开的方法设置或者访问私有的属性
设置:通过set方法,命名格式:set属性名();属性名首字母要大写
访问:通过get方法,命名格式:get属性名();属性名首字母要大写
【演示】
//对象能在类的外部"直接"访问
public class Student{
public String name;
public void println(){
System.out.println(this.name);
}
}
public class Test{
public static void main(String[] args){
Student s = new Student();
s.name = "tom";
}
}
在类中一般不会把数据直接暴露在外部的,而使用private(私有)关键字把数据隐藏起来
【演示】
public class Student{
private String name;
}
public class Test{
public static void main(String[] args){
Student s = new Student();
//编译报错,在类的外部不能直接访问类中的私有成员
s.name = "tom";
}
}
如果在类的外部需要访问这些私有属性,那么可以在类中提供对于的get和set方法,以便让用户在类的外部
可以间接的访问到私有属性
【示例】
//set负责给属性赋值
//get负责返回属性的值
public class Student{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
public class Test{
public static void main(String[] args){
Student s = new Student();
s.setName("tom");
System.out.println(s.getName());
}
}
继承
- 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。
- 继承关系的俩个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来
表示。
多态
如: Student继承了Person类
Student s1 = new Student();
Person s2 = new Student();
Object s3 = new Student();
则s1只能调用Student中的方法
而s2除此之外还能调用Person中的方法
(Object是所有类的父类)