java(继承,重写,this)

JAVA(继承,重写,this)

类与类之间的关系:

  • 继承
  • 属性关系
  • 参数关系

 

继承

继承核心是扩展父类功能

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+=");
    }
}

 

重写规则

  • 访问权限:重写的方法的权限不能低于被重写的权限,一般权限都用等于
  • 返回值类型:没有要求必须一样,可以不同,但必须是被重写方法的子类,一般都是一样
  • 方法体:一样
  • 参数列表:一样
  • 抛出异常:重写抛出的异常不能比被重写的异常大

 

this作为对象传回的用法

优化构造方法,和set方法

public class Test3 {
    private String id;
    private  String name;
    public String getId() {
        return id;
    }
    public Test3 setId(String id) {
        this.id = id;
        return this;//返回值this对象s是对象t的再一次调用
    }
    public String getName() {
        return name;
    }
    public Test3 setName(String name) {
        this.name = name;
        return this;
    }

    public  Test3 info(String id,String name){//this的用法,可作为对象传回,
            this.setId(id);
            this.setName(name);
            return this;
    }
    public static void main(String[] args) {
        Test3 t=new Test3();
        t=t.info("1","1");
        System.out.println(t.getId() +"   "+ t.getName());
        
        //set赋值多个,需要写多行,优化set赋值
        t.setName("a").setId("a");//链式处理
    }
}

 

posted @ 2022-07-21 10:26  一只神秘的猫  阅读(53)  评论(0)    收藏  举报