封装其实就是针对类属性的私有化(封装),即属性私有。同时向外部提供公有的set和get方法。实际操作中,当实例化类之后给某一个属性辅助的时候,调用set方法内部可以添加安全性检查,规避一些不合法的属性辅助(比如:Person类实例化后给年龄赋值 999等)
提高程序的安全性,保护数据
隐藏代码的实现细节
统一接口
提高系统的可维护性
public class Student {
// 属性私有 private关键字
private String name;
private int age;
private String sex;
?
// 提供一些可以操作这些属性的公共方法
// public get and set
?
public int getAge() {
return age;
}
?
public void setAge(int age) {
if (age > 120 || age < 0) {
this.age = 3;
} else {
this.age = age;
}
}
?
public String getName() {
return this.name;
}
?
public void setName(String name) {
this.name = name;
}
}
Java中类是对具体事物的抽象,提取某一类事物的共有属性和方法
继承其本质是对某一批类的抽象,从而实现对现实世界更好的建模
Java中只有单继承,没有多继承
继承是类与类之间的关系
继承关系的两个类,一个是子类(派生类),一个是父类(基类),子类继承父类,使用关键字extends表示
子类和父类之间,从意义上来讲应该具有“is a”的关系(如:Student is a Person)
在Java中,所有的类都默认直接或者间接继承Object类
子类构造方法中使用super()调用父类的构造方法,super()必须放在第一行
super必须只能出现在子类的方法或者构造方法中
在构造方法中不能同时调用super() 和 tis(),因为都要求放在方法的第一行 (Call to ‘super/this()‘ must be first statement in constructor body)
this:本身调用者这个对象
super:代表父类对象的引用
this:没有继承也可以使用
super:只能在继承条件下才可以使用
this():本类的构造方法
super():父类的构造方法
前提:需要有继承关系,其本质是子类重写父类的方法
方法名必须相同
参数列表必须相同
修饰符:范围可以扩大,但不能缩小 public > protected>default>private
抛出的异常:范围可以缩小,但不能扩大
重写:子类的方法和父类必须一致,方法体不同
为什么重写:父类的功能,子类不一定需要,或者不一定满足
一个对象的实际类型是确定的,但可以指向对象的引用类型有很多(父类、有关系的类)
Student extends Person
Student s1 = new Student();
Person s2 = new Student();
有继承关系
子类重写了父类的方法
父类引用指向子类对象
注意:多态是方法的多态,属性没有多态性
判断对象和类之间是否存在继承关系
子类转父类,可以直接转换 Person person = new Student()
父类转子类,需要强制转换 Student student = (Student)new Person()
原文:https://www.cnblogs.com/dbin1126/p/14635936.html