JAVA封装
类与类之间的关系:
- 继承
- 属性关系
- 参数关系
继承
继承核心是扩展父类功能
JAVA中继承只有单继承,只有一个直接父类,可以有多个间接父类,继承父类的属性,方法
创建构造器,实例化的过程,当一个类被实例化,先实例化他的父类,直接父类,然后是他自己
说明:
class Sum{
Integer age;
String name;
public void sum(){
}
public Sum(Integer age, String name) {
this.age = age;
this.name = name;
System.out.println("sum");
}
}
class Cat extends Sum{
public void eat(){
}
public Cat(Integer age, String name) {
super(age, name);
System.out.println("cat");
}
}
class Person extends Cat{
public Person(Integer age, String name) {
super(age, name);
System.out.println("person");
}
}
class Mao extends Cat{
public Mao(Integer age, String name) {
super(age, name);
System.out.println("mao");
}
}
public class Test1 {
public static void main(String[] args) {
// Sum s=new Sum(1,"1");
// s.age=0;
// Cat c=new Cat(1,"1");
// c.sum();
// Person p=new Person(1,"1");
// Mao m=new Mao(1,"1");
// m.eat();
Mao m=new Mao(1,"1");
}
}
运行结果:sum cat mao
super关键字:
- 调用父类的结构
this和super区别:
- this调用当前类
- super调用父类
- this可以省略,super也可以省略(先在本类找,没有,去父类找)
- this可以调本类构造器this(age),super调父类构造器
- super调用父类构造器时,必须在第一行,和this冲突,2选1
- this指向本类,代表对象;super指向父类,不能代表对象
方法重写
子类可以重写父类的方法
class Sum{
Integer age;
String name;
public Sum(Integer age, String name) {
this.age = age;
this.name = name;
System.out.println("sum");
}
public void sum(){
System.out.println("sum+=");
}
}
class Cat extends Sum{
public Cat(Integer age, String name) {
super(age, name);
System.out.println("cat");
}
public void eat(){
}
public void sum(){
super.sum();
System.out.println("cat+=");
}
}
重写规则
- 访问权限:重写的方法的权限不能低于被重写的权限,一般权限都用等于
- 返回值类型:没有要求必须一样,可以不同,但必须是被重写方法的子类,一般都是一样
- 方法体:一样
- 参数列表:一样
- 抛出异常:重写抛出的异常不能比被重写的异常大
原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/275801.html