封装
一:封装大多数时候是对于属性而言,方法用的封装较少
二:关键字private(与public相对)
public class Demo01 {
private String name;//属性私有。
private int num;
private char sex
}
给属性加上private,则其他类中不能再实例化了,如图,报错。
- 使用public的get/set来提供一些可以操控这些私有属性的方法。
get:获取数据。
set:给这个数据设置值
public class Demo01 {
private String name;
private int num;
private char sex;
public String getName(){//get获得这个数据
return this.name;
}
public void setName(String name){//set 给这个数据设置值
this.name = name;
}
}
将一些属性设为private,不对外开放,利用get/set 留下端口操作,确保了安全性和交互性。
利用set设定一些属性的具体限制,以避免出错。
鼠标右键选择Generate
快捷选择
得到
封装小结:1.提高程序的安全性,保护数据
2.对外隐藏代码的具体细节
3.统一接口
4.增加系统的可维护性
继承
一:
关键字extends
子类继承了父类就会有父类的一切方法(但如果父类中有的属性为private则不能继承)
父类
public class Person {
public int money = 10_0000_0000;
public void say(){
System.out.println("说了一句话");
}
}
子类
public class Demo02 {
public static void main(String[] args) {
Student student = new Student();
student.say();
System.out.println(student.money);
}
快捷键Ctrl+h,在侧边栏显示继承
(Java中所有类都默认直接或间接继承object)
二:super(利用super在子类中调用父类的东西)
- 如果要调用父类的构造器必须在子类构造器第一行调用
三:方法重写(和属性无关)
- 如果方法是静态的,则有如下结果
- 如果是非静态的
出现这种结果是因为子类重写了父类的方法。
为什么需要重写:
1.父类的功能,子类不一定需要或不一定满足
总结:
1.需要有继承关系,子类重写父类的方法,则之后走zile
2.方法名必须相同,参数列表必须一样,方法体不同
3.范围可以扩大(如果从private到public)public>protected>Default>private
4.抛出的异常:范围可以被缩小不能被扩大
多态
一:
父类的引用可以指向子类
子类和父类指向的引用不一样
注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类必须要有联系,否则会有类型转换异常(ClassCastException)
3.存在条件:继承关系,方法需重写,而且父类的引用是指向子类对象的
instanceof(判断两个类之间是否存在父子关系)
可应用如图
类型转换
高转低需要强制转换,反之不用
两个转换句式
类似(int)xxx
总结:
1.父类引用指向子类的对象
2.把子类转换为父类,向l转型;
3.把父类转换为子类,向下转型:强制转换
4.方便方法的调用,减少重复的代码,更加简洁;