继承,Super,方法重写
继承
*继承的本质是对某一批类的抽象,从而实现对实现世界更好的建模
*extends的意思就是‘扩展’,子类是父类的扩展。
*java中类只有单继承没有多继承,一个父可以扩展多个子 一个子不可以继承多个父
`
package com.oop.Demo05;
//父类
//java中 所有的类,都默认直接或者简介继承Object
public class Person{
public void say(){
System.out.println("法律框架");
}
private int money=10_0000_0000;
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
`
`
package com.oop.Demo05;
//子类
public class Student extends Person{
}
`
`
public static void main(String[] args) {
Student student = new Student();
student.say();
System.out.println(student.getMoney());
}
`
Super
`
super注意点
1.super调用父类的构造方法,必须在构造方法的第一个
2.super必须只能出现在子类的方法过着构造方法中!
3.super和this 不能同时调用构造方法
this:
代表的对象不同
this:本身调用这这个对象
super:代表父类对象的应用
前提
this:没有继承也没有使用
super:只能在继承条件下才可以使用
构造方法
this():本类的构造
super():父类的构造
`
`
//父类
public Person() {
System.out.println("Person无参执行");
}
protected String name = "shangyu";
public void print(){
System.out.println("Person");
}
`
`
//子类
public Student() {
//隐藏代码:调用了父类的无参构造
super();//调用父类的构造器,必须要在类构造器的第一行 this也一样
System.out.println("Student无参执行");
}
private String name="my";
public void print(){
System.out.println("Student");
}
public void test1(String name){
print();
this.print();
super.print();
}
public void test(String name){
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
}
`
`
//测试类
public static void main(String[] args) {
Student student = new Student();
student.test1("世界");
//student.test();
}
方法重写
`
重写:需要有继承关系,子类重写父类的方法
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大:public>protexted>private
4.抛出的异常:范围可以被缩小,但不能扩大; ClassNotFoundException -->Exception(大)
重写,子类的方法和父类必须一致 方法体不同
为什么需要从写:
1.父类的功能,子类不一定需要,或者不一定满足;
alt+Insert:override;
`
`
//父类
public static void test(){
System.out.println("B=>test");
}
//子类
public static void test(){
System.out.println("A=>test");
}
//测试类
//方法的的调用只和左边有关,定义的数据类型有关
A a = new A();
a.test(); //A
//父类引用指向了子类
B b = new A();
b.test(); //B
`
`
//父类
public void test(){
System.out.println("B=>test");
}
//子类
//重写
@Override
public void test() {
System.out.println("A=>test");
}
//测试类
//方法的的调用只和左边有关,定义的数据类型有关
A a = new A();
a.test(); //A
//父类引用指向了子类
B b = new A();
b.test(); //B
}



浙公网安备 33010602011771号