1继承
1.1有其父才有其子
2继承带来的问题
2.1父类的方法不一定适合子类
开发中父类的方法继承给子类使用,但是子类使用不太符合子类的情况,如果子类方法重新定义,重新命名,又会导致代码冗余,开 发压力较大。
2.2重写【Override】
条件
1重写是存在与继承中子类或者【尊从中的实现类】
2重写情况下要求子类方法中的方法和父类中方法声明完全一致
3方法体按照子类情况完成
注意
1子类重写父类方法,要求必须加上@Override严格格式检查
2@Override会检查子类重写的方法,方法声明是否和父类一致
3abstract关键字【难】
3.1abstract概述
【前提】
abstract修饰的方法子类必须重写
3.2abstract关键字代码使用和注释
package com.qfen.rxs;
abstract class LoLHero {
abstract public void q();
abstract public void w();
abstract public void e();
abstract public void r();
}
class Thresh extends LoLHero {
@Override
public void q() {
System.out.println("死亡判决");
}
@Override
public void w() {
System.out.println("魂引之灯");
}
@Override
public void e() {
System.out.println("厄运钟摆");
}
@Override
public void r() {
System.out.println("幽冥监牢");
}
}
class Varus extends LoLHero {
@Override
public void q() {
System.out.println("穿刺之箭");
}
@Override
public void w() {
System.out.println("枯萎箭袋");
}
@Override
public void e() {
System.out.println("恶灵箭雨");
}
@Override
public void r() {
System.out.println("腐败锁链");
}
}
public class Demo1 {
public static void main(String[] args) {
Thresh saolei = new Thresh();
saolei.q();
saolei.w();
saolei.e();
saolei.r();
Varus varus = new Varus();
varus.q();
varus.w();
varus.e();
varus.r();
}
}
3.3abstract使用特征
1abstract修饰的方法,没有方法体
2abstract修饰的方法,要求在定义在abstract修饰的类内,或者接口interface内
3abstract修饰的类内,是可能存在abstract修饰的方法,但是修饰的方法是没有方法体的
4重载【Overload】
4.1重载要求
要求
1重载要求在同一个类内,或者接口interface内
2重载要求方法名必须一致
3重载要求方法的参数必须不一致
4重载对于方法的返回值没有任何的约束
4.2重载能够解决的问题
1简化代码结构。在同一类名同方法功能一致,但是参数满足多样化
2简化程序员的开发压力
3能够做到统一化处理方式【后面项目中案例给大家安排】
4.3代码演示
package com.qfen.rxs;
class Person {
public void game() {
System.out.println("大吉大利,今晚吃鸡");
}
public void game(String name) {
System.out.println("玩" + name);
}
public void game(String name, int time) {
System.out.println("玩" + time + "小时" + name);
}
}
public class Demo2 {
public static void main(String[] args) {
Person person = new Person();
person.game();
person.game("LoL");
person.game("WOT", 2);
}
}
5this关键字补充
5.1this关键字复习
this关键字用于在方法中区别成员变量和局部变量,解决就近原则问题
5.2在一个构造方法中,通过this关键字调用其他构造方法
格式
1要求在一个构造方法中,Constructor
2this(实际参数);
3会根据实际参数的类型个数顺序来选择对应的构造方法
package com.qfen.rxs;
class Dog {
private String name;
private String color;
private int age;
public Dog() {
this(null, null, 0);
}
public Dog(String name) {
this(name, null, 0);
}
public Dog(String name, String color) {
this(name, color, 0);
}
public Dog(String name, String color, int age) {
this.name = name;
this.color = color;
this.age = age;
}
}
public class Demo3 {
}
6super关键字
6.1super关键字作用
1. super关键字可以用于在子类和父类之间,同名成员变量,同名 成员方法调用时明确区分。2. super关键字可以显式调用父类的构 造方法,用于初始化父类的成员变量数据。 3. super关键字使用的格式,规范和this非常类似
7final关键字
7.1基本语法
最终!!!
final关键字可以修饰 局部变量 有且只能被赋值一次,赋值之后不可以修改
成员变量 定义时必须初始化,未初始化报错
成员方法 使用final修饰的方法为最终方法,不能被重 写!!!
类 没有子类,不能被继承
Java中是存在一些类是使用final修饰的
String类