1.封装
所谓封装,就是将客观事物封装成抽象的类,并且类可以把数据和方法让可信的类或者对象进行操作,对不可信的类或者对象进行隐藏。类就是封装数据和操作这些数据代码的逻辑实体。在一个类的内部,某些属性和方法是私有的,不能被外界所访问。通过这种方式,对象对内部数据进行了不同级别的访问控制(public,protected,private),就避免了程序中的无关部分的意外改变或错误改变了对象的私有部分。
2.继承
提高了代码的复用,继承有这样一种能力,就是使用现有的类的所有功能,还可以在父类的基础上进行扩展功能(重写或者实现新的方法)。通过继承创建的新类称为子类或派生类,被继承的称为基类。继承有两种,一种是实现继承,另外一种是接口继承。实现继承可以直接使用基类的属性和方法而无需额外编码,接口继承是指使用属性和方法的名称,但是基类必须提供实现的能力。
3.多态
-
Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。
-
多态是同一个行为具有多个不同表现形式或形态的能力。
-
多态就是同一个接口,使用不同的实例而执行不同操作。
代码示例一:
package test1;
import java.util.*;
public class Test2 {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new LinkedList<>();
list1.add(1);
list2.add(1);
}
}
别看都使用add,但是不一样。
list1的add方法(得去看arraylist怎么实现的add):
list2的add方法(得去看linkedlist怎么实现的add):
代码示例二:
package test1;
public class demo04 {
public static void main(String[] args) {
People p = new Stu();
p.eat();
//调用特有的方法
Stu s = (Stu) p;
s.study();
// ((Stu) p).study();
}
}
class People {
public void eat() {
System.out.println("吃饭");
}
}
class Stu extends People {
@Override
public void eat() {
System.out.println("吃水煮肉片");
}
public void study() {
System.out.println("好好学习");
}
}
class Teachers extends People {
@Override
public void eat() {
System.out.println("吃樱桃");
}
public void teach() {
System.out.println("认真授课");
}
}
4.多态的转型
多态的转型分为向上转型和向下转型两种
向上转型:多态本身就是向上转型过的过程
- 使用格式:父类类型 变量名=new 子类类型();
- 适用场景:当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作。
向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用各类型
- 使用格式:子类类型 变量名=(子类类型) 父类类型的变量;
- 适用场景:当要使用子类特有功能时。