zoukankan      html  css  js  c++  java
  • 面向对象特征之继承,方法的重写

    1.面向对象的特征:继承性

    2.通过 Class A extends B 实现类的继承

    子类:A     父类(基类 SuperClass):B 

    3.子类继承父类后,父类声明的属性   方法,子类就可以获取到。

               注意:当父类中有私有的属性或者方法时,子类是可以获取的到,只是由于封装性的设计

                          使得子类不能直接调用。

      子类除了继承父类的结构之外,还可以定义自己的特有成分

    extends:子类是对父类功能的扩展

    4. Java中只能单继承:一个类只能继承一个父类,反之,一个父类可以有多个子类

    5.父子类是相对的概念

    Student:

    package com.aff.java;
    
    public class Student extends Person {
        /*
         * private String name; private int age;
         */
        private String schoolName;
    
        public Student() {
        }
    
        public Student(String name, int age) {
            // this.name = name;
            // this.age = age;
            this.setName(name);
            this.setAge(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; }
         * 
         * public void eat() { System.out.println("吃饭"); }
         * 
         * public void walk() { System.out.println("走路"); }
         */
    
        public void info() {
            System.out.println("学生");
        }
    }

    Worker:

    package com.aff.java;
    
    public class Worker extends 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; }
         * 
         * public void eat() { System.out.println("吃饭"); }
         * 
         * public void walk() { System.out.println("走路"); }
         */
    
    }

    Person:

    package com.aff.java;
    
    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;
        }
    
        public void eat() {
            System.out.println("吃饭");
        }
    
        public void walk() {
            System.out.println("走路");
        }
    }

    Graduate:

    package com.aff.java;
    
    public class Graduate extends Student {
        public void show() {
            System.out.println("我想芳芳了");
        }
    }

    TestExtends:

    package com.aff.java;
    
    public class TestExtends {
        public static void main(String[] args) {
            Student s = new Student();
            s.eat();
    
            Worker w = new Worker();
            w.eat();
    
            Person p = new Person();
            p.eat();
    
            Graduate g = new Graduate();
            g.eat();
            g.info();
            g.show();
        }
    }

    输出结果:

    吃饭
    吃饭
    吃饭
    吃饭
    学生
    我想芳芳了

     

    二:方法的重写

     1.前提:有子类继承父类

     2.子类继承父类以后,若父类的方法对子类不适用, 那么子类可以对父类的方法重写(override  overwrite)

        重写规则: 1.要求子类方法的    返回值类型    方法名(参数列表)与父亲的方法一样

                           2.子类方法的修饰符不能小于父类方法的修饰符

                           3.若父类方法抛异常,那么子类抛的异常类型不能大于父类的

                           4.子父类的方法必须同为static或同为非static的

    All that work will definitely pay off
  • 相关阅读:
    Android源码分析(二)-----如何编译修改后的framework资源文件
    Android源码分析(一)-----如何快速掌握Android编译文件
    AI2(App Inventor 2)离线版服务器网络版
    AI2(App Inventor 2)离线版服务器单机版
    AI2(App Inventor 2)离线版服务器(2019.04.28更新)
    解释器模式
    迭代器模式
    备忘录模式
    访问者模式
    命令模式
  • 原文地址:https://www.cnblogs.com/afangfang/p/12515532.html
Copyright © 2011-2022 走看看