本文共 2673 字,大约阅读时间需要 8 分钟。
格式:
public class 子类名 extends 父类名 {}
优点:
1.提高了代码的复用性(多个类相同的成员可以放到同一个类中)2.提高了代码的维护性(如果共有成员的代码需要修改,只需要修改父类中的代码)
弊端:
继承让类与类之间产生了关系,增强了类之间的耦合性;当父类发生变化时,子类也不得不跟着变化,削弱了类的独立性。
不用滥用继承,只有满足A类是B类的一种,AB类明确存在继承关系,如猫和动物,苹果和水果时,才需要考虑继承。
super:代表父类存储空间的标识(可以理解为父类对象引用)
作用:
子类中所有的构造方法默认都会访问父类中无参的构造方法
this和super的区别:
继承中变量的访问特点:
在子类方法中访问一个变量→子类局部范围找→子类成员方法找→父类成员范围找→都没有就报错(不考虑父类的父类)
继承关系下代码的执行顺序:
父类的变量 --> 父类构造方法 --> 子类变量 --> 子类构造方法
子类实例化时,先调用子类构造函数进栈,然后在子类构造函数中通过super语句调用父类构造函数,执行完父类构造函数再执行子类构造函数;
子类创建对象时,只会创建一个对象,但是会在子类对象中开辟空间,存放父类成员变量。
Java中有4种访问权限修饰符
访问权限修饰符的作用:控制一个类、类成员是否被其他类访问。
权限范围:方法重写:子类中出现了和父类相同的方法签名(方法名、参数列表、返回值类型)
应用方法重写的目的:沿袭父类的功能,又可以定义子类特有的内容。
@Override是一个注解,可以帮助我们检查重写方法声明的正确性。
注意事项:
方法重载与方法重写的区别:
当一个类缺乏足够多的具体信息来对应对象时,如单纯的人和动物(无法具体道某个特定的人和动物),我们就可以把这样的类称为抽象类。
抽象类的特点:
抽象类成员特点:
public abstract class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } public abstract void show();}//创建学生类,继承Person父类public class Student extends Person { String number; //学号 public Student(String name, int age, String number) { super(name, age); this.number = number; } //重写父类方法 public void show(){ //super.show(); System.out.println("姓名:" + super.getName() + ",年龄:" + super.getAge() +", 学号:"+number); }}//创建老师类,继承Person父类public class Teacher extends Person { double salary; //薪资 public Teacher(String name, int age, double salary) { super(name, age); this.salary = salary; } public void show(){ //super.show(); System.out.println("姓名:" + super.getName() + ",年龄:" + super.getAge() +", 年薪:"+salary); }}
final关键字是状态修饰符
final修饰局部变量:
转载地址:http://ndwei.baihongyu.com/