继承

作者: Binary_r | 来源:发表于2019-03-19 21:35 被阅读0次

    一、继承

    1:描述一个学生类:姓名年龄学号属性,学习的方法
    2:描述一个工人类:姓名年龄工号属性,工作的方法
    3:描述一个人类:姓名年龄属性,说话的方法。
    4:发现学生类和人类天生有着联系,学生和工人都是人。所以人有的属性和行为学生和工人都会有。出现类代码重复故使用继承减少代码重复率。

    class Person {
        String name;
        int age;
    
        // 静态变量(类变量)对象和对象之间的代码重复使用静态变量
        static String country = "CN";
        Person() {
        }
        void speak() {
            System.out.println(name + ":哈哈,我是人!!!");
        }
    }
    // 让学生类和人类产生关系,发现学生is a 人,就可以使用继承
    class Student {
        String name;
        int age;
        Student() {
        }
        void study() {
            System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");
        }
    }
    class Worker {
        String name;
        int age;
        void work() {
            System.out.println(name + ":好好工作,好好挣钱。");
        }
    }
    class Demo1 {
        public static void main(String[] args) {
            Student s = new Student();
            s.name = "jack";
            s.age = 20;
            s.study();
            Worker w = new Worker();
            w.name = "rose";
            w.work();
        }
    }
    

    二、继承特点

    1:描述类和类之间的关系
    2:降低类和类之间的重复代码
    3:降低对象和对象之间的代码重复使用静态变量
    4:降低类和类之间的代码重复使用就继承

    三、extends关键字

    class Student extends Person {
    
        Student() {
    
        }
        void study() {
            System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");
        }
    }
    
    继承细节;

    1:类名的设定,被继承的类称之为父类(基类),继承的类称之为子类
    2:子类并不能继承父类中所有的成员
    3:父类定义完整的成员 静态成员,非静态,构造方法。静态变量和静态方
    法都可以通过子类名.父类静态成员的形式调用成功。
    4:所有的私有成员不能继承,private修饰的成员。
    5:构造函数不能被继承

    四、super关键字

    作用:
    1:主要存在于子类方法中,用于指向子类对象中父类对象。
    2:访问父类的属性
    3:访问父类的函数
    4:访问父类的构造函数

    五、重写(覆盖 override)

    1、 在继承中,子类可以定义和父类相同的名称且参数列表一致的函数,将这种函数
    称之为函数的重写.
    2、前提
    (1):必须要有继承关系
    3、特点
    (1):当子类重写了父类的函数,那么子类的对象如果调用该函数,一定调用的是重写过后的函数。可以通过super关键字进行父类的重写函数的调用。
    (2): 继承可以使得子类增强父类的方法
    4、细节
    (1): 函数名必须相同
    (2):参数列表必须相同
    5、子类重写父类的函数的时候,函数的访问权限必须大于等于父类的函数的访
    问权限否则编译报错
    6、子类重写父类的函数的时候,返回值类型必须是父类函数的返回值类型或该返回值类型的子类。不能返回比父类更大的数据类型

    class Animal{
        int x=1;
        String name;
        
        void eat(){
            System.out.println("吃东西");
        }
        void shout(){
            System.out.println("我是动物");
        }
    }
    
    class Dog extends Animal{
        
        
        void eat(){
            System.out.println("啃骨头");
        }
        void shout(){
            System.out.println("旺旺");
        }
        void eat(String food){
            System.out.println("吃:"+food);
        }
    }
    class Cat extends Animal{
            //重写方法
        void eat(){
            System.out.println("吃老鼠");
        }
        void shout(){
            System.out.println("喵喵");
        }
    }
    
    class Demo9{
    
        public static void main(String[] args){
            Dog d=new Dog();
            d.shout();
            d.eat();
            
            Cat c=new Cat();
            c.shout();
            c.eat();
            System.out.println();
            }
    }
    

    六、重载(overload):

    1:前提: 所有的重载函数必须在同一个类中
    2:特点: 函数名相同,参数列表不同,与其他的无关(访问控制符、返回值类型)

    相关文章

      网友评论

          本文标题:继承

          本文链接:https://www.haomeiwen.com/subject/uwfomqtx.html