检测继承性,super的用法,方法的重写等
Posted J九木
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检测继承性,super的用法,方法的重写等相关的知识,希望对你有一定的参考价值。
开门见山。在一片空白里,利用自己看的理论知识,进行逐一枚举并验证。只有当你能在一篇空白里利用所学,运用所思,尽可能的归纳并以某种形式表达出来,或是策划方案,或是代码,或是文章,这时才能在理解之上建立记忆,而不是在虚无之中制造懵懂。
//检测继承性,super的用法,方法的重写
public class TestOverride {
public static void main(String[] args) {
//new父类对象
Father F1 = new Father();//new一个父类对象F1,同时执行了父类的无参构造方法
System.out.println(F1.a);
F1.a = "java";
System.out.println(F1.a);
Father F2 = new Father("呕吼");//new一个父类对象F2,同时执行了父类的含参构造方法
F2.age(50);
F2.eat();
//new子类对象
Son s1 = new Son();//new一个子类对象s1,同时执行子类的无参构造方法以及该方法里默认的或者修改后的父类构造方法
s1.eat();//检测子类对父类的方法重写,重写的方法里用super调用的原先父类的功能
s1.study();
Son s2 = new Son(18);//new一个子类对象s2,同时执行子类的含参构造方法以及该方法里默认的或者修改后的父类构造方法
System.out.println(s2.a);//子类可以继承使用父类的属性(非私有的)
System.out.println(s2.c);
s2.age(26);//子类可以使用父类的方法(非私有的)
}
}
//创建父类 Father
class Father{
//父类的成员变量
String a;
int b = 999;
//父类的构造方法。默认会有无参构造方法,可以写出来进行修改
public Father(){
System.out.println("Father的无参构造方法");
}
public Father(String a){
System.out.println("Father的含参构造方法"+a);
}
//创造普通方法描述功能
public void eat(){
System.out.println("吃个酸菜鱼吧~~");
}
//私有的不会被子类继承
private void work(){
System.out.println("年薪"+b+"万");
}
public int age(int c){
work();//在公共的方法里调用私有的方法
return c;
}
}
//创建子类 son
class Son extends Father{
// 成员变量
int b = 666;
int c = 6;
//子类的构造方法
public Son(){
//super() 这里第一行其实默认有个super来执行父类的无参构造方法
//不写的时候,默认在new子类对象时,先执行父类的无参构造方法,然后执行自己的构造方法
System.out.println("子类son的无参构造方法");
}
public Son(int a){
//可以用super具体使用父类的特定构造方法
super("哈哈哈");
System.out.println("子类son的含参构造方法"+a+" 同时验证super调用父类构造方法的执行");
}
//创造子类son 的普通方法
//方法的重写override:返回值类型 方法名 参数列表和父类的方法一样
//重写时,对应的子类方法的权限要 大于等于 父类的方法权限
//重写的方法不对父类的方法源码进行修改,而是进行功能的修改与扩展
public void eat(){
super.eat();
System.out.println("再吃个"+c+"斤龙虾吧!!");
}
//子类自己的方法
public void study(){
System.out.println(super.b);//子类与父类的变量b重复了,用super调用父类的变量b
System.out.println("滚去学习");
}
}
以上是关于检测继承性,super的用法,方法的重写等的主要内容,如果未能解决你的问题,请参考以下文章
29.Python面向对象类:主要讲初始化方法__init__,垃圾回收,继承&多继承,方法重写,super()函数