1、类与对象
类是一个模板:抽象 对象是一个具体的实例
2、方法
定义 调用
3、对应的引用
引用类型:基本类型(8种)
对象是通过引用来操作的:栈------>堆
4、属性:字段Field 成员变量
默认初始化:
数字: 0 0.0
char: u0000
boolean: false
引用: null
修饰符 属性类型 属性名 = 属性值
private String name = null;
5、对象的创建和使用
- 必须使用new关键字创建对象,构造器:Person person = new Person();
- 对象的属性 person.name;
- 对象的方法 person.sleep();
6、类
静态的属性 属性
动态的行为 方法
封装、继承、多态
1、封装
高内聚、低耦合
- 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
- 低耦合:仅暴露少量的方法给外部使用
封装(数据的隐藏)
- 通常,应该禁止直接访问一个对象中数据的直接表示,而应通过操作接口来访问,这称为信息的隐藏
1、提高程序的安全性
2、隐藏代码的实现细节
3、统一接口
4、系统可维护性
2、继承
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
JAVA类中只有单继承,没有多继承
- 继承是类和类之间的一种关系,除此之外,还有依赖、组合、聚合等
- 在继承关系中,一个为子类(派生类),一个为父类(基类),子类继承父类,使用关键字extends来表示
- 子类和父类之间,从严格意义上来说应该具有 “is a” 的关系
super注意点:
1、super调用父类得构造方法,必须在构造方法的第一个
2、super只能出现在子类的方法或构造方法中
3、super和this不能同时调用构造方法
与 this 的区别
代表的对象不同
- this:本身调用者这个对象
- super:代表父类对象的引用
前提
- this:没有继承也可以使用
- super:只能在继承条件下使用
构造方法
- this():本类的构造
- super():父类的构造
重写
重写:需要有继承关系,子类重写父类的方法
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大,但不能缩小 public>protected>default>private
- 抛出的异常:范围,可以被缩小,但不能扩大 ClassNotFoundException --> Exception(大)
重写,子类的方法和父类必须要一致,方法体不同
为什么需要重写?
父类的功能,子类不一定需要,或者不一定满足
3、多态
同一方法可以根据发送对象的不同而采用多种不同的行为方式
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)
多态注意事项:
1、多态是方法的多态,和属性没有关系
2、父类和子类有联系 类型转换异常 ClassCastException
3、存在条件:继承关系,方法需要重写,父类引用指向子类 Father f = new Son();
以下情况不能被重写
- static方法,属于类,不属于任何一个方法
- final 终类(不能被继承)
- private 方法(私有的)
类型转换:
1、父类引用指向子类
2、子类 > 父类(向上转换)
3、父类 > 子类(向下转换)需要强转
4、方便方法的调用,减少重复的代码
抽象类
abstract可以用来修饰方法,也可以用来修饰类,如果修饰方法,那么该方法就是抽象方法,修饰类时同理。
抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。
抽象类不能使用new关键字来创建对象,它是用来让子类继承的。
子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。
//1、不能new这个抽象类,只能靠子类去实现它:约束
//2、抽象类中可以写普通方法
//3、抽象方法必须在抽象类中
//抽象的抽象:约束
接口
接口的本质就是规范,定义的是一组规则,体现了现实世界中“如果你是......则必须能......”的思想。
作用:
1、约束
2、定义一些方法,让不同的人实现
3、public abstract
4、public static final
5、接口不能被实例化,接口中没有构造方法
评论 (0)