针对面向对象三大特征(继承、封装、多态)
1.1 简单继承
JAVA中------类只有单继承,没有多继承;
JAVA中------接口有单继承,也有多继承;
- 子类继承父类,可以得到父类的属性和方法(除了父类的构造方法),但有些不能直接访问(父类的私有属性和方法);
- 定义类时若无extend,则其父类为 java.lang.Object;
- 使用ctrl+t 查看类的继承层次结构;
- instanceof :二元运算符,左边对象,右边类,对象是右边类或子类创建的时,返回true,否则返回false.
1.2 方法重写(父类的部分方法无法使用(爸爸的情书哈哈哈))
class Vehicle{ //父类
public void run() {
System.out.println("跑");
}
public void stop() {
System.out.println("停");
}
}
class Horse extends Vehicle { //子类(重写stop方法)
public void stop() {
System.out.println("吁");
}
}
public class override {
public static void main(String[] args) {
Horse Jam = new Horse();
Jam.stop();
}
}
1.3 Object类,"=="、equals方法,super
- 所有Java类的基类,所有对象都拥有Object类的属性和方法。
- "=="方法判断左右是否相同:
基本数据类型~~~~~~> 比较值
引用类型~~~~~~> 比较地址(即是否为同一对象)。 - equals方法判断内容是否相同(equals方法可以根基需要重写)比如对用户而言,有时只需判断id是否相等就可以知道是否为同一用户。
- super可以用来访问父类中被子类覆盖的方法和属性。
每个构造方法的第一句都是super();用来调用父类对应的构造方法。流程:先向上追溯到Object,再依次向下执行类的初始化块和构造方法,直到当前子类(构造方法向上追溯)。
2.1 封装
通过一些关键字(访问控制符)使属性和方法不被轻易访问。
image.png
2.2 JavaBean封装
class User{
private int id;
private String name;
private int age;
private boolean man;
//想设置私有name,调用此方法
public void setName(String name){
this.name = name;
}
//想取出私有name,调用此方法
public String getName(){
return this.name;
}
}
public class Person {
public static void main(String[] args) {
User u = new User();
u.setName("1");
System.out.println(u.getName());
}
} //打印结果为1
属性太多时eclips提供生成set get方法的快捷键。
image.png
image.png
注意:布尔变量get 变为is.