【java】学习路线7-继承、super方法、重写、重载

Posted on 2022-03-10 00:31  罗芭Remoo  阅读(41)  评论(0编辑  收藏  举报

/*继承-java只有单继承
如果你创建了很多个class,但是之间有很多相同的成员变量和成员方法,修改的时候又要多处修改好麻烦,
此时就可以创建多一个类来存储这些重复的东西,统一管理。相当方便.
*/


/*
super方法
调用父类的构造方法
如果想调用带参数的父类构造方法,只需要使用super(...)即可.
如果需要调用同名的父类中的方法,使用super(). 即可.
*/


/*
注意:static修饰词无所谓是继承的还是现场实例化的,凡是用到我static所在类的,都只有唯一一个!
*/


/*
访问同名属性采用就近原则
    直接写就是访问当前的代码块
    this就是访问当前类中的属性
    supper访问父类中的属性
*/


/*
继承中的构造:通过构造子类对象的时候都会调用父类的构造方法,显式隐式
如果父类设置了有参数的构造方法,则必须用supper(...),系统不会默认调用一个

*/


/*
可以调用其他构造方法,使用this(...)即可
但是在子类又调用父类构造方法,又调用子类的另一个构造方法,是不可以的。
    this(..)和super(..)都必须要放在第一条语句中,所以不能!

*/


/*
重写方法
         (返回值 方法名 参数)三要素
只要子方法中有方法 ?? 和父类中的一样,则代表父类的方法被重写了,按照子类的为准
注意 1 不能重写父类中的private方法
     2 不能重写为权限更低的方法,例如public不能重写为private
*/


/*
重载方法 -

final修饰的是
类  :不能被继承的类
方法:不能被重写的方法
变量:不能被重新赋值 (常量)
    常量 : 字面值常量 子定义常量(final)

与重写方法不同的是,重写方法是在子类父类里边的,但是重载方法是在同一个类当中的
 参数  方法名  返回值
不一样  一样   不要求

*/


public class Learn06{
    public static void main (String[] as){
        Teacher tt = new Teacher();
        
        //System.out.println(tt.getName());
        
    }        
}

class Person{//父类
    private static String name;
    
    public Person(){
        System.out.println("hello");
    }
    public Person(String name){
        System.out.println(name);
        setName(name);
    }
    
    public void setName(String name){
        this.name=name;
    }    
    public String getName(){
        return this.name;
    }
    
    private void sayHello(){
        System.out.println("你好ya 嘿嘿!~");
    }
    
    public void marked(){
        System.out.println("父类的narked方法");
    }
}

class Teacher extends Person{
    private int level;
    
    
    public Teacher(){
        super("杰杰");//调用父类的构造方法2
        
        marked();//调用子类中的marked
        super.marked();//调用父类中的marked
        Person ps = new Person();
        Person ps1= new Person();
        ps.setName("-wwzzjj-");
        ps1.setName("aaa");
        System.out.println("----" + ps.getName() + "---"+ super.getName());
        System.out.println("----------");
        sayHello();
    }
    
    
    public void marked(){
        
        System.out.println("子类的narked方法");
    }
    
    
    
    
    
}