JAVA的三大特性:封装、继承、多态
封装:
将类的一些属性隐藏起来,对外界不可见,对外提供一对getter和setter方法来进行访问,外界不必知道其内部的设计细节,通过访问权限的限制,从而保证了数据的安全(封装是指将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。)
如何使用封装?
1.将类的属性设置为private(私有)的权限
public class Person {
private String name;
private int age;
}
这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏
2.生成setter和getter方法,避免直接访问到属性
对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,如:
public class Person{
private String name;
private int age;
public int getAge(){
return age;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public void setName(String name){
this.name = name;
}
}
以上实例中public方法是外部类访问该类成员变量的入口。
3.创建对象进行调用
Person p = new Person();
p.setName("张三");
p.setAge(18);
//使用set设置,get获取
System.out.println("姓名"+p.getName()+"年龄"+p.getAge());
4.使用封装的好处:
-
提高代码的安全性。
-
提高代码的复用性:通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性
-
“高内聚”:封装细节,便于修改内部代码,提高可维护性。
-
“低耦合”:简化外部调用,便于调用者使用,便于扩展和协作。
继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法
类的继承格式:
class 父类 {
}
class 子类 extends 父类 {
}
Java 不支持多继承,但支持多重继承
继承的特性:
1.子类拥有父类非 private 的属性、方法。
2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
3.子类可以用自己的方式实现父类的方法
4.提高了类之间的耦合性
继承关键字:extends 和 implements
implements关键字:使用范围为类继承接口的情况,可以同时继承多个接口
public interface A {
public void eat();
public void sleep();
}
public interface B {
public void show();
}
public class C implements A,B {
}
super 与 this 关键字
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字:指向自己的引用。
class Animal {
void eat() {
System.out.println("animal : eat");
}
}
class Dog extends Animal {
void eat() {
System.out.println("dog : eat");
}
void eatTest() {
this.eat(); // this 调用自己的方法
super.eat(); // super 调用父类方法
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Animal();
a.eat();
Dog d = new Dog();
d.eatTest();
}
}
输出结果为:
animal : eat
dog : eat
animal : eat
多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作
多态存在的三个必要条件:
1.继承
2.重写
3.父类引用指向子类对象(向上转型):Parent p = new Child();
向上转型:多态本身就是向上转型过的过程,即将子类对象地址赋值给父类引用
Parent p = new Child();//向上转型,此时,p是Parent类型
向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,即由父类型转为子类型
Child c = (Child)p;//此时,把Parent类型的p转成小类型Child