封装
- 属性私有 get / set
- public 的 get / set 方法
//get获得这个数据
eg :private String name;
public String getName(){
return this.name;
}
//set给这个数据设置值
public void setName(String name){
this.name = name;
}
- IDEA快捷键 :Alt +Insert
- 封装的意义
提高程序的安全性,保护数据
隐藏代码的实现细节
统一接口,形成规范
系统的可维护性增加了
继承 : extends
- extends的意思是“扩展”,子类是父类的扩展
Java中类只偶遇单继承,没有多继承
子类继承了父类,就会拥有父类的全部方法
私有方法不能继承 - Object类
在java中,所有的类,都默认直接或间接继承Object
IDEA快捷键 :Ctrl + H - super
注意点 :
super调用父类的构造方法,必须在构造方法的第一个
super只能出现在子类的方法或者构造方法中
super和this不能同时调用构造方法
和this的区别 :
代表的对象不同
this : 本身调用者这个对象
super : 代表父类对象的引用
前提
this: 没有继承也能使用
super : 只在有继承时使用
构造方法
this : 本类的构造
super : 父类的构造 - Override : 重写
重写需要继承关系,子类重写父类的方法
方法名,参数列表必须相同,方法体不同
修饰符 : 范围可以扩大,但不能缩小
public >protected > Defult >private
抛出的异常 :范围可以被缩小,但不能放大
classNotFoundException=\Exception
为啥要重写 :
父类的功能,子类不一定需要,或者不一定满足
只能重写方法,不能重写属性
IDEA快捷键 :Alt + Insert
静态方法和非静态的方法区别很大
静态方法 : 方法的调用之和左边定义的类型有关
eg:A a = new A();
a.test();
//父类的引用指向了子类
B b = new A();
子类重写父类的方法,执行子类的方法
子类没重写父类的方法,执行父类的方法
重写 :方法体不同 / 重载 :参数不同
多态
-
即同一方法可以根据发送对象的不同而采用多种不同的行为方式
-
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)
-
多态存在的条件 :
有继承关系
子类重写父类的方法
父类引用指向子类对象 -
多态是方法的多态,属性无多态性
-
上代码—(父子类中均有run()方法)
//Student 能调用的方法都是自己的或者继承父类的
Student s1 = new Student();
//父类型,可以指向子类,但是不能调用子类独有的方法
Person s2 = new Student();
s1.run();
s2.run();
运行结果相同,因为子类重写父类的方法,执行子类的方法
子类没重写父类的方法,执行父类的方法
抽象类
- //abstract 抽象类;类extends:单继承
public abstract class Action{}
// 抽象方法,只有方法名字,没有方法的实现
public abstract void doSomeThing{}
- 注意 :
不能new这个类抽象类,只能靠子类去实现它:约束!
抽象类中可以写普通方法
抽象方法必须在抽象类中
抽象类的所有方法,都继承给了它的子类,所以在子类要重写它的所有方法
接口 :interface
普通类 :只有具体实现
抽象类 :具体实现和规范(抽象方法)都有
接口 :只有规范!自己无法写方法~~专业的约束
-
接口的本质是契约==>人的法律
-
命名规范 :XxxService,无方法体(无{})
-
上代码 :
接口
//interface 定义的关键字,接口都需要有实现类
public interfaceUserService{
//接口中的所有定义方法其实都是抽象的public abstract
void add(String name);
}
实现类
//抽象类 :extends (单继承)
//类,可以通过implements实现接口(多接口)
//实现了接口的类,就需要重写接口中的全部接口
public class UserServiceImpl implements UserService
public void add(String name){
}
-
接口中定义常量默认 public static final(很少用)
5. 实现必要重写接口中的方法