继承:
继承的主要功能就是实现类的共性的抽取
特点:
1.子类拥有父类的所有可继承的内容
2.子类出了可以继承父类的内容之外 还可以有自己的专属的内容
定义的格式:
父类的定义:
就是是一个普通的类 不需要做特殊的操作
子类的定义:
public class 类名 extends 父类{}
在子父类关系中成员变量的访问特点:
1.创建父类 只会调用自己的内容 和子类没有任何关系
2.子类在访问成员变量的时候 如果自己有 则优先访问自己的成员变量 如果自己没则向上查找父类的成员变量 如果父类也没有则会编译报错
通过方法访问成员变量 会优先使用的是方法所在的类的成员变量
三种变量的表述形式
局部变量 不做特殊的标记
本类的成员变量 this.成员变量
父类的成员变量 super.成员变量 //本类是子类 在子类中得到父类的成员变量
在继承中成员方法的访问情况:
子类对象会优先调用自己的方法 如果自己没有 会向上查找(指的是向父类里面进行查询) 如果父类有 执行父类中的方法 如果父类没有则会编译报错
方法的覆盖重写:
1.子类重写父类的方法 方法名和参数必须都是一致的 建议使用 @Override (注解 annotation)如果不符合方法覆盖重写 会编译报错
2.子类重写父类的方法 返回值要求 子类返回值类型的范围小于或者等于父类返回值类型的范围
3.子类重写父类的方法 修饰符要求子类的修饰符的范围大于或者等于父类的修饰符的范围
修饰符的范围大小的顺序 public > protected > 默认(什么都不写)> private
super的三种用法
1.可以访问父类的成员变量
2.可以访问父类的成员方法
2.可以访问父类的构造方法
this 关键字是用来访问本类内容
1. 在本类的成员方法中,访问本类的成员变量。
2. 在本类的成员方法中,访问本类的另一个成员方法。
3. 在本类的构造方法中,访问本类的另一个构造方法
注意:this(参数...);必须是在第一个位置 super和this两种构造调用,不能同时使用。
继承的3个特点:
1.java里面 类是单继承的 接口是可以多继承的
2.类是可以多级继承(多层继承)
3.一个父类可以有多个子类
抽象方法:
public abstract 返回值类型 方法名(参数列表...);
抽象类:
public abstract class 类名{}
注意点:
1.抽象方法所在的类必须得是抽象类 抽象类中不一定有抽象方法
2.抽象类里面是有构造方法 构造方法是给子类对象进行初始化 使用的
3.抽象类不能创建对象;
4.子类必须得覆盖重写父类里面的抽象方法或者是该类也是抽象类
接口:
接口就是公共的规范标准Interface protocol(协议)
定义格式:
public interface Demo{
接口内容 ;
}
接口内容:
java7:
1.常量
格式:
[public][static][final] 数据类型 变量名 = 数据值;
注意点:
1.[public][static][final]都是可以选择性省略 要求只要是在接口里面声明的变量 必须得用这三个关键字进行修饰
2.必须对接口中定义的变量进程赋值操作(即初始化操作)
3.软性要求 代码规范 接口里面定义的变量(常量)变量名字要求全部大写 每个单词之间使用下划线连接
2.抽象方法
public abstract 返回值类型 方法名(参数列表);
注意:[public] [abstract]可以全部省略 也可以选择性的省略任意一个
java8:
3.默认方法
主要功能 就是用来解决接口升级的一个问题
格式:
[public] default 返回值类型 方法名(参数列表){
方法体;
}
默认方法 只能在接口中定义 别的地方不能定义
默认方法 调用的时候和成员方法的调用方式一致
4.静态方法
定义格式:
public static void show(){
方法体;
}
静态方法是不能被重写的
使用方式:
不能使用实现类创建的对象调用
直接使用接口名.静态方法(参数列表)
java9:
5.私有方法
定义的格式:
跟普通的方法相比的话唯一不一样的地方就是修饰符是private 其他的内容都一样
普通的私有方法:
private 返回值类型 方法名(参数列表){
方法体;
}
普通静态的私有方法
private static 返回值类型 方法名(参数列表){
方法体;
}
功能:
private修饰的方法只能在本类中使用
可以对本类中重复的内容进行抽取
接口的基本使用:
1.接口不能直接用来创建对象使用
2.需要创建一个实现类 实现 implements 接口名 实现里面的抽象方法
3.使用实现类创建对象 使用对象调用方法
注意:实现类必须得覆盖重写接口中的所有的抽象方法 除非该类也是抽象类
/*
在Java 9+版本中,接口的内容可以有:
1. 成员变量其实是常量,格式:
[public] [static] [final] 数据类型 常量名称 = 数据值;
注意:
常量必须进行赋值,而且一旦赋值不能改变。
常量名称完全大写,用下划线进行分隔。
2. 接口中最重要的就是抽象方法,格式:
[public] [abstract] 返回值类型 方法名称(参数列表);
注意:实现类必须覆盖重写接口所有的抽象方法,除非实现类是抽象类。
3. 从Java 8开始,接口里允许定义默认方法,格式:
[public] default 返回值类型 方法名称(参数列表) { 方法体 }
注意:默认方法也可以被覆盖重写
4. 从Java 8开始,接口里允许定义静态方法,格式:
[public] static 返回值类型 方法名称(参数列表) { 方法体 }
注意:应该通过接口名称进行调用,不能通过实现类对象调用接口静态方法
5. 从Java 9开始,接口里允许定义私有方法,格式:
普通私有方法:private 返回值类型 方法名称(参数列表) { 方法体 }
静态私有方法:private static 返回值类型 方法名称(参数列表) { 方法体 }
注意:private的方法只有接口自己才能调用,不能被实现类或别人使用。
*/
|
|