• Java 入门25 继承 this super


     

     

     Person类

    package com.ITheima.d7_extends;
    
    public class Person {
        private String name;
        private  int age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    View Code

    Student类继承Person类

    package com.ITheima.d7_extends;
    
    public class Student extends Person{
        public  void study(){
            System.out.println(getName()+"好好学习");
        }
    }
    View Code

    Teacher类继承Person类

    package com.ITheima.d7_extends;
    
    public class Teacher extends Person {
        public void teach() {
            System.out.println(getName()+"开始教导学生");
        }
    }
    View Code

    案例

     Person1类

    package com.ITheima.d8_extends;
    
    public class Person1 {
        private String name;
        private int age;
    
        public void watch(){
            System.out.println("查看课表");
        }
    
        //无参构造器
        public Person1() {
        }
    
        //有参构造器
        public Person1(String name, int age){
            this.name=name;
            this.age=age;
        }
    
        //set get
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    View Code

    Student1类

    package com.ITheima.d8_extends;
    
    public class Student1 extends Person1 {
        private String stayClass;
        public void write(){
            System.out.println("填写听课反馈");
        }
    
        public String getStayClass() {
            return stayClass;
        }
    
        public void setStayClass(String stayClass) {
            this.stayClass = stayClass;
        }
    }
    View Code

    Teacher1类

    package com.ITheima.d8_extends;
    
    public class Teacher1 extends Person1 {
        private String place;
    
        public void sendMsg(){
            System.out.println("发布问题");
        }
    
        public String getPlace() {
            return place;
        }
    
        public void setPlace(String place) {
            this.place = place;
        }
    }
    View Code

    TestDemo11类

    package com.ITheima.d8_extends;
    
    import com.ITheima.d7_extends.Teacher;
    
    public class TestDemo11 {
        public static void main(String[] args) {
            Student1 s=new Student1();
            s.setName("TOM");//继承父类
            s.setAge(11);//继承父类
            s.setStayClass("梅花");
            s.write();
    
            Teacher1 t=new Teacher1();
            t.setName("Lili");//继承父类
            t.setAge(49);//继承父类
            t.setPlace("嘎嘎");
            t.sendMsg();
        }
    }
    View Code

     

     

     

     

     

     

     方法重写

     @Override重写注释

     Phone父类

    package com.ITheima.d8_extends;
    
    public class Phone {
        public void call(){
            System.out.println("开始打电话");
        }
    
        public void sendMessage(){
            System.out.println("发送短信开始");
        }
    }
    View Code

    NewPhone 子类

    package com.ITheima.d8_extends;
    
    public class NewPhone extends Phone{
        /**
         * 方法重写
         * @Override  放在重写后的方法上,作为重写是否正确的校验注解
         * 加上该注解后 如果重写错误,编译阶段会出现错误提示
         * (建议重写方法都加@Override注解,代码安全 ,优雅!)
         * 方法重写注意事项和要求
         * 1 重写方法的名称,形参列表与被重写的方法是的名称和参数列表一致
         * 2 私有方法不能被重写
         * 3 这类重写父类方法时 访问权限必须大于或等于父类(暂时了解:缺省<protected<public)
         * 4 子类不能重写父类的静态方法,如果重写会报错
         */
        @Override
        public void call(){
            super.call();//调用父类的call方法
            System.out.println("支持饰视频通过~~~~");
        }
    
        /**
         * 方法重写
         */
        @Override
        public void sendMessage(){
            super.sendMessage();//调用父类的sendMessage方法
            System.out.println("支持图片发送");
        }
    }
    View Code

    Test测试类

    package com.ITheima.d8_extends;
    
    public class Test {
        public static void main(String[] args) {
            NewPhone np=new NewPhone();
            np.call();
            np.sendMessage();
        }
    }
    View Code

     Animal类

    package com.ITheima.d9_extends;
    
    public class Animal {
        public Animal(){
            System.out.println("===父类Animal无参构造器被执行===");
        }
    }
    View Code

    Cat类

    package com.ITheima.d9_extends;
    
    public class Cat extends Animal{
        public Cat(){
            super();//默认的 ,写不写 都有,默认就是执行父类无参数构造器
            System.out.println("===========子类Cat 无参构造执行=========");
        }
    
        public Cat(String name){
            System.out.println(name+"======子类有参构造器执行=======");
        }
    }
    View Code

    Test类

    package com.ITheima.d9_extends;
    
    public class Test {
        public static void main(String[] args) {
            Cat c=new Cat();
            System.out.println("---------------------");
            Cat c1=new Cat("波斯猫");
        }
    }
    View Code

     Animal类

    package com.ITheima.d9_extends;
    
    public class Animal {
        private String name;
        private int age;
    
        //无参构造器
        public Animal() {
        }
    
        //有参构造器
        public Animal(String name,int age){
            this.name=name;
            this.age=age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    View Code

    Cat类

    package com.ITheima.d9_extends;
    
    public class Cat extends Animal{
        //子类的私有成员变量
        private  String className;
    
        //无参构造器
        public Cat() {
        }
    
        //有参构造器
        public Cat(String name,int age,String className){
            //一定要访问父类的无参构造器(如果父类没有无参构造器 则需要手动访问父类的有参构造器 执行super(E element))
            super(name,age);//默认的 ,写不写 都有,默认就是执行父类无参数构造器
            this.className=className;
        }
    
        public String getClassName() {
            return className;
        }
    
        public void setClassName(String className) {
            this.className = className;
        }
    }
    View Code

    Test类

    package com.ITheima.d9_extends;
    
    public class Test {
        public static void main(String[] args) {
            Cat c=new Cat("波斯猫",5,"幼儿园");
            System.out.println("---------------------");
    
            System.out.println(c.getAge());
            System.out.println(c.getName());
            System.out.println(c.getClassName());
        }
    }
    View Code

     this  super

  • 相关阅读:
    CISCO设备的一些硬件知识
    引用 DOS查QQ好友IP(另附入侵方法)
    【转】端口入侵常用工具分析
    修改CentOS默认yum源为国内yum镜像源
    使用Runtime类运行本地可执行文件
    英汉小词典 java随机存取文件流应用 version1.0
    8086/8088汇编过程练习 实现登录界面及其验证
    批处理伪加密
    快速启动中【显示桌面】的还原方法
    批处理字符串偏移指针
  • 原文地址:https://www.cnblogs.com/lvlisn/p/16410591.html
Copyright © 2020-2023  润新知