zoukankan      html  css  js  c++  java
  • Java面向对象之继承

    继承:
    1.提高了代码的复用性
    2.让类与类之间产生了关系,有了这个关系,才有了多态的特性
    Java语言中:java只支持单继承,不支持多继承(同时继承)
    因为多继承容易带来安全隐患,当多个父类中定义了相同功能但内容不同,子类不知道应该运行哪一个
    但是java保留这种机制,并用另一种体现形式,叫多实现
    java继承多层继承

    class Person
    {
        String name;
        int age;
    }
    class Student extends Person{
        void study()
        {
            System.out.println("good study");
        }
    }
    class Worker extends Person
    {
        void study()
        {
            System.out.println("good work");
    
        }
    }

     子父类    子类本身中应该是this.属性变量     子类调用父类super.属性变量

    子类可以覆盖父类,但是super可以调用父类的方法

    子类权限要大于父类权限,比如父类某方法不是private,子类不能是private,父类是public,子类必须是public

    在对子类进行初始化时,父类构造函数也会运行,因为子类构造函数第一行隐含super(),其会调用父类的空参数的构造函数

    子类构造构造函数中super(参数)可以调用父类的有参构造函数先来初始化继承的部分

     

    final关键字修饰符

    1.可以修饰类、函数和变量

    2.被final修饰的类不可以被继承,最终类

    3.可以用来保护封装

    4.倍final修饰的变量是一个常量,只可以倍赋值一次,成员变量或者局部变量final double PI=3.14   或者public staticfinal double PI=3.14

     抽象类,抽取多个类相同名功能,内容不同,做成父类,当然了不需要复写的方法可以不加修饰符abstract,但是没必要写内容,不可以new对象,调用方法没意义,子类必须复写抽象类所有的方法,否则其也是抽象类,加abstract修饰符

    abstract class Student

    {

      abstract void study();

    }

     */
    abstract class Employee
    {
        private String name;
        private String id;
        private double pay;
        Employee(String name,String id,double pay)
        {
            this.name = name;
            this.id =id;
            this.pay=pay;
        }
        public abstract void work();//但是,经理不干普通员工的活,所以抽象类
    
    }
    class Manager extends Employee
    {
       private int bonus;
        Manager(String name,String id,double pay,int bonus)
        {
            super(name,id,pay);
            this.bonus=bonus;
        }
        public void work()
        {
            System.out.println("manage work");
        }
    }
    class Worker extends Employee
    {
        Worker(String name,String id,double pay,int bonus)
        {
            super(name,id,pay);
        }
        public void work()
        {
            System.out.println("Worker work");
        }
    }

     

  • 相关阅读:
    Crypto++库安装、测试
    Unix环境高级编程(一)
    Unix 环境高级编程
    C++加密解密库之选择
    python简单网页服务器示例
    使用resteasy作为dubbox消费者
    oracle驱动包maven下载失败解决
    dubbox下载编译运行demo
    Linux环境变量从用户配置改为系统配置
    @Override注解在Eclipse中编译报错
  • 原文地址:https://www.cnblogs.com/BetterThanEver_Victor/p/6357999.html
Copyright © 2011-2022 走看看