目录
- 继承(extends)与接口( implements)
- 接口( implements)
- 接口里的修饰符
- 接口和类
- 接口和抽象类
继承(extends)与接口( implements)
类,接口与数组同为Java中的三大引用方法,这里刚学到继承,先来说下继承。
继承就是两个类:通过继承这个方法,使得子类可以继承父类的属性和方法。
- 子类可以调用父类中的方法和属性
- 子类可以添加方法和属性作为补充
- 子类可以重写父类中的方法,前提是其中的返回值类型,方法名,参数类型(个数,顺序)完全一样
- 一个子类只能有一个父类(类似于一个儿子只能有一个老爸)
例子:
这是父类
package helloword;
public class Father {
public int a;
public int b;
public String name;
public void study() {
System.out.println(name + "的英语六级的成绩为" + a);
}
public int count(int a, int b) {
return a+b;
}
}
这是子类
package helloword;
public class Son extends Father{
//重写父类的方法
public void study() {
System.out.println(name + "四级考试成绩为" +b);
}
public int count(int a, int b) {
return a-b; //加变减
}
//子类对父类做补充
public void lazzy() {
System.out.println("奔哥英语免修");
}
public static void main(String[] args) {
Son s = new Son();
s.a = 493;
s.b = 425;
s.name = "韩奔";
s.study();
s.lazzy();
System.out.println("奔哥的英语四级比英语六级的分数低了"+s.count(s.a,s.b));
}
}
输出的结果为:
韩奔四级考试成绩为425
奔哥英语免修
奔哥的英语四级比英语六级的分数低了68
以上便可以体现继承的特征。
继承之中还分有向上转型和向下转型,先来说向上转型(自动转型):
格式: 父类 对象名 = new 子类();
自动转型是子类转型为父类,当你用转型后的对象调用方法它是从父类找到子类,所以子类如果重写了父亲类的方法,它优先调用子类中重写的方法。
代码如下:
package hello;
//父类
public class Father {
public void study() {
System.out.println("华理404就旭哥有对象");
}
}
//子类
package hello;
public class Son extends Father{
public void study() {
System.out.println("最帅的辉哥还是单身");
}
public static void main(String[] args) {
Father m = new Son();
m.study();
}
}
输出结果:
最帅的辉哥还是单身
以上便是向上转型。
接着便是向下转型:
格式 子类 对象名 = (子类) 要转型的对象名;
例子:
package hello;
//父类
public class Father {
public void study() {
System.out.println("华理404就旭哥有对象");
}
public void lazzy() {
System.out.println("华理机械就一个院士");
}
}
//子类
package hello;
public class Son extends Father{
public void giveup() {
System.out.println("皇族永不放弃");
}
public void study() {
System.out.println("最帅的辉哥还是单身");
}
public static void main(String[] args) {
//创建一个Son类型的对象s
Son s = new Son();
s.study();
//强制将m对象转为Father类型
Father m = new Son();
m.lazzy(); //Son中没有lazzy
m.study();
Son un = (Son)m;
un.giveup();
}
}
输出结果:
最帅的辉哥还是单身
华理机械就一个院士
最帅的辉哥还是单身
皇族永不放弃
接口( implements)
接口里的修饰符
- 方法:public abstract(默认不写)
- 属性:public static final(默认不写)
接口和类
接口与类有相同也有不同:
- 接口在写的时候,其中的方法全部都是没有内容的
- 要想调用接口,就要重写接口中的所有方法
- 接口中的属性要在定义的时候直接赋值,而且在调用时不可更改
- 一个类可以调用多个接口
- 接口没有构造函数,不可以创建对象
- 通常定义接口属性的时候属性名要大写,方便区分
例子:
public interface Teacher {
public String NAME = "王东"; //初始定义时赋值
public void math(int a,int b);
}
public class Student implements Teacher{
public void math(int a,int b){
System.out.println("一加一等于" + (a+b));
}
public static void main(String[] args) {
System.out.println("数学课老师的名字为"+Teacher.NAME);
Student ui = new Student();
ui.math(1,1);
}
}
输出结果:
数学课老师的名字为王东
一加一等于2
接口和抽象类