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