Java学习Day02------继承

it2025-03-21  5

继承学习总结

继承1、格式:2、特点:3、访问权限规则4、继承的好处5、继承的弊端6、应用场景7、方法重写注意事项8、初始化顺序9、继承规则 super关键字抽象类1、特点:2、应用场景3、案例 final关键字代码块

继承

1、格式:

class 子类名 extends 父类名 { }

2、特点:

(1)Java只支持单继承 (2)java中支持多层继承

3、访问权限规则

public>protected>默认>private (1)public任意访问 (2)protected同个包下任意访问,不同包下子类可以访问 (3)默认权限只能在同一包下任意访问 (4)private只能在当前类访问

4、继承的好处

(1)提高了代码的复用性 (多个类相同的成员可以放到同一个类中) (2)提高了代码的维护性(如果方法的代码需要修改,修改一处即可)

5、继承的弊端

  类与类之间产生了 关系,类的耦合性增强,如果父类发生了改变,子类实现也就会随之发生变化

6、应用场景

  类与类之间存在is…A关系(比如:猫和狗是动物的一种)

7、方法重写注意事项

(1)父类中私有的东西不能被重写 (2)父类中静态方法不能被子类重写 (3)子类重写时,访问权限必须大于等于父类

8、初始化顺序

  子类初始化的时候后一定先初始化父类

9、继承规则

  在继承关系中可以继承成员变量和成员方法,但是不能继承构造函数。子类初始化的时候一定要先初始化父类,在每个子类构造函数的 第一条语句添加super(…)(必须是第一条语句)

super关键字

1、this&super   this:代表当前对象的而引用   super:代表父类存储空间的标识 2、this&super访问成员变量   this.成员变量:访问本类成员变量   super.成员变量:访问父类成员变量 3、this&super访问成员方法   this.成员方法:访问本类成员方法   super.成员方法:访问父类成员方法 4、构造方法   this(…):访问本类构造方法   super(…):访问父类构造方法

抽象类

1、特点:

  (1)抽象类和抽象方法必须使用abstract关键字修饰   (2)抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类   (3)抽象类无法实例化   (4)抽象类可以有构造方法并不服务于抽象类创造对象,抽象类无法创造对象,他的作用只是为了帮助实现类创造对象)   (5)抽象类的子类要么重写抽象类中的所有抽象方法,要么自己本身就是抽象类

2、应用场景

  在抽取子类共性 时,有些方法是在父类中没有具体实现的,也就是说某些方法,不同的子类会有不同的实现,无法固定代码。

3、案例

  案例需求     定义猫类(Cat)和狗类(Dog)     猫类成员方法:eat(猫吃鱼)drink(喝水…)     狗类成员方法:eat(狗吃肉)drink(喝水…)   实现步骤     1. 猫类和狗类中存在共性内容,应向上抽取出一个动物类(Animal)     2. 父类Animal中,无法将 eat 方法具体实现描述清楚,所以定义为抽象方法     3. 抽象方法需要存活在抽象类中,将Animal定义为抽象类     4. 让 Cat 和 Dog 分别继承 Animal,重写eat方法     5. 测试类中创建 Cat 和 Dog 对象,调用方法测试   代码实现

- 动物类 public abstract class Animal { public void drink(){ System.out.println("喝水"); } public Animal(){ } public abstract void eat(); } - 猫类 public class Cat extends Animal { @Override public void eat() { System.out.println("猫吃鱼"); } } - 狗类 public class Dog extends Animal { @Override public void eat() { System.out.println("狗吃肉"); } } - 测试类 public static void main(String[] args) { Dog d = new Dog(); d.eat(); d.drink(); Cat c = new Cat(); c.drink(); c.eat(); //Animal a = new Animal(); //a.eat(); }

final关键字

1、可以修饰方法、变量、类 2、特点:   (1)被final修饰的方法不能被子类重写   (2)被final修饰的变量在第一次赋值之后就不能被赋值了,就变成了一个常量(常量命名:如果是一个单词就所有字母大写,如果是多个单词,仍然是所有字母大写,但是单词之间添加下划线)     (final修饰基本数据类型时,代表的是其值不能更改,修饰引用变量时,代表的是其引用的地址值不能更改,但是对象的属性值可以更改)     (final修饰成员变量的时候,要注意初始化时机,第一个就是在变量创建的时候给值,第二个就是在构造函数结束之前进行赋值)   (3)被final修饰的类就不能被继承了 ,也就是不能有子类

代码块

1、局部代码块   在方法中定义,限定变量生命周期 2、构造代码块   在类中方法外定义,每次构造方法执行的时候都会执行一次该代码,并且会在构造方法之前执行。作用:将多个构造方法中相同的代码抽取到构造代码块中,提高代码复用率 3、静态代码块   在类中方法外定义,使用static关键字进行修饰,随着类的加载而加载,并且只会执行一次。作用:在类加载的时候进行一些数据初始化的操作

最新回复(0)