封装是一种将抽象性函式接口的实现细节包装,隐藏起来的方法
1.封装的优点:1.封装可以保护外部类对本类的随机访问 2.良好的封装可以减少耦合 3.类内部的结构可以任自己修改 4.可以对成员变量更精准的控制 5.隐藏信息,实现细节2.封装的实现
1.将自己的属性值改变(一般设置为private) 设置为私有,只能本类访问,其他类不可以访问本类的属性,这就隐藏了信息 2.每个值的属性对外提供get-set方法,外部类可以通过get和set方法访问 (其中this是实例变量的值)二、 继承 1.为什么要继承:
比如说有两个类,一个是狗类,一个是猪类,他们有共同的行为,吃饭,睡觉,狗叫
在其两个类中都声明其方法,太麻烦了,所以就想到把他们的共有方法提出来,成为父类,狗和猪继承父类的吃饭和睡觉方法,就可以拥有自己的特性。
1.使得代码更加简洁 2.提高了代码的复用性3.继承的特性
-
子类拥有父类非private的属性,方法
-
子类可以拥有自己特有的方法和属性(可以对父类进行扩展)
-
子类可以用自己的方法实现父类的方法
-
java中的继承都是单继承
注意: super:通过该关键字可以实现对父类的访问,用来引用当前对象的父类 this:指向自己的引用三、多态 1.什么是多态
多态是指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。
比如有狗类、猪类、猫类,他们有共同的吃方法,但是具体吃的是什么大不一样,狗吃狗粮,猪吃猪食,即一个方法有不同的形式。
1.继承
2.重写:子类能够重写父类的方法
当子类对象调用重写的方法时,调用的是子类的方法,如果想调用父类的方法,必须使用super关键字。
3.父类的引用指向子类的对象 Parent p = new Child();
3.多态的案例
父类小汽车
//1.通过分析,抽象形成一个汽车类
class Car{
//2.定义并封装汽车类的属性--成员变量
private String brand;//品牌
private String color;//颜色
private int id;//编号
private double price;//价格
//3.定义功能
public void start(){
System.out.println("我的小车车启动啦~");
}
public void stop(){
System.out.println("唉呀妈呀熄火了~");
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
子类
//4.创建子类
class BMW extends Car{
String color = "五彩斑斓的黑";
//5.重写父类的方法
@Override
public void start(){
System.out.println("都让开,我的车要起飞啦~");
}
}
//6.创建子类2
class TSL extends Car{
//7.重写父类的方法
@Override
public void stop(){
System.out.println("唉呀妈,怎么停不下来呢");
}
//8.添加子类的特有功能
public void swim(){
System.out.println("没想到吧,我还是个潜水艇");
}
}
主方法
public class DesignCar {
public static void main(String[] args) {
//9.创建一个纯纯的父类对象进行测试
Car c = new Car();
System.out.println(c.getColor());//null
c.start();
c.stop();
//c.swim();//报错,父类对象不可以调用子类的特有功能
//10.创建纯纯的子类对象做测试
BMW b = new BMW();
System.out.println(b.color);//五彩斑斓的黑
System.out.println(b.getColor());//null
b.start();//都让开,我的车要起飞啦~
b.stop();//唉呀妈呀熄火了~
//11.创建多态对象进行测试
Car c2 = new TSL();
//System.out.println(c2.color);
System.out.println(c2.getColor());
c2.stop();
c2.start();
//c2.swim();
}
}
运行结果如下



