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

 

原文地址:https://www.cnblogs.com/BetterThanEver_Victor/p/6357999.html