Test1--继承
Fu.java
public class Fu {
int i=1;
}
Zi.java
public class Zi extends Fu { //继承父类Fu的属性(int i)和方法(public void show())
int i=2;
public void show() {
int i=3;
System.out.println(i); //就近
System.out.println(this.i); //自己的
System.out.println(super.i); //父类的
}
}
Test.java
public class Test {
public static void main(String[] args) {
Zi s = new Zi();
s.show();
Fu f = new Zi(); //多态,父类变量使用子类的方法
f.show();
}
}
结果:
3
2
1
3
2
1
Test2--重写
/*
* 重载:名字一样,参数列表,返回值类型不同
* 重写:什么都一样,子类重写权限必须大于父类
* public>protected>default(默认,不能写)>private
*/
Test3--抽象类
Develop.java
/*
* 定义类,JavaEE开发员
* 继承抽象类Develop,重写抽象的方法
*/
public class EE extends Develop{
//重写父类抽象方法
public void work() {
System.out.println("JavaEE工程师在开发B/S软件");
}
}
Android.java
public class Android {
//重写父类抽象方法
public void work() {
System.out.println("Android工程师在开发手机软件");
}
}
Test3.java
/*
* 测试抽象类
* 创建他的子类对象,使用子类对象调用方法
*/
public class Test3 {
public static void main(String[] args) {
EE ee = new EE();
Android an = new Android();
ee.work();
an.work();
}
}
Test4--接口
MyInterface1.java
/*
* 定义接口
* 使用关键字 interface
* 接口定义:
* 成员方法都是抽象的,不能定义带方法体的方法
*
* 定义抽象方法:固定格式
* public abstract 返回值类型 方法名(参数列表);
* 修饰符写或不写都是public,但不可写别的
*
* 接口中成员变量的定义
* 必须定义为常量
* 格式:
* public static final 数据类型 变量名 = 值
* public 权限
* static 可以被类名直接.调用
* final 最终固定的变量
*/
public interface MyInterface1 {
//定义抽象方法
public abstract void function1();
//常量被静态修饰,可以直接被接口的名字调用
public static final int x = 3;
}
MyInterface2.java
public interface MyInterface2 {
public abstract void function2();
}
MyInterfaceImpl.java
/*
* 定义一个类,实现接口,重写接口中的抽象方法
* 创建实现类对象
*
* 新的关键字 implements
*/
public class MyInterfaceImpl implements MyInterface1,MyInterface2 {
//抽象方法必须全重写
public void function1() {
System.out.println("实现类,重写类接口111方法");
}
public void function2() {
System.out.println("实现类,重写类接口222方法");
}
}
Test4.java
/*
* 可继承(一个)和接口(多个)同时实现
* 一个接口可以继承多个接口
*/
public class Test4 {
public static void main(String[] args) {
System.out.println(MyInterface1.x);
//创建接口的实现对象
MyInterfaceImpl my = new MyInterfaceImpl();
my.function1();
my.function2();
}
}