面向对象有什么?
类:有现实生活中的一组拥有相同特征的对象,抽取出他们的共同特性封装在同一个类中。
对象:由类衍生出来的就叫做对象
对象创建
类名 变量名 = new 类名();
比如我们创建一个Cat类
Cat c = new Cat();
首先Cat c 在栈中开辟一块内存用来存储c这个变量,
new Cat() 在堆中开辟一块内存保存类中的属性
面向对象三大特征
封装、继承、多态
封装
顾名思义就是把一些不需要别人看到的代码隐藏起来,只对外提供访问接口,比如我们组装一台台式电脑,一些硬件要放在主机里面然后提供接口来输入输出信息。
使用private访问修饰符将属性私有化,向外提供get和set接口来访问这个属性
public class Dog {
private Integer id;
private String name;
@Override
public String toString() {
return "Dog{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
public Dog(Integer id, String name) {
this.id = id;
this.name = name;
}
public Dog() {
}
public void setId(Integer id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
}
继承
由已知类派生新的类,使用extends关键字实现,被继承的类叫父类,派生出来的类叫子类
注意:
- 子类中通过super关键字来调用父构造方法
- 一个父类可以有很多个子类,而一个子类只能有一个父类
多态
需要存在继承关系,父类的引用指向子类的对象
特点:
会丢失子类特有的属性和方法,会调用子类重写过的方法
比如:
public static void main(String []ages){
Animal a = new Cat();//Animal是父类,Cat是子类,Animal引用Cat
System.out.println(a.action());//action为父类和子类共有的方法
}