继承

编译顺序:
先父类后子类;
先属性,后构造。
继承与c++有诸多不同,请注意。java只能单继承

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Animal {
public int age;
public String name;
public void eat(){
System.out.println("Eat Somethings!");
}
}
public class Dog extends Animal {
public void eat(){
System.out.println("Eat Dog's food!");
}
}
public class Initi {
public static void main(String[] args) {
// TODO Auto-generated method stub
Dog one =new Dog();
one.eat();
}
}
/* results are
Eat Dog's food!
*/

多态

一、引用多态
二、方法多态

1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
// TODO Auto-generated method stub
Animal one = new Animal();
Animal two = new Dog();//父类的引用指向子类
Animal four = new Dog();
//Dog three = new Animal();子类的引用不能指向父类。
one.eat();
two.eat();
//four.watchDoor();当调用子类特有的方法时,不能父类的引用
}

abstract

abstract修饰类
不关注之类的实现,但是关注子类的必有得特征
abstract修饰方法,只需声明,不必自己实现
抽象类不能直接创建,但是可以定义引用变量

接口

nterface–接口

一种特殊的类,由全局常量和公共的抽象方法组成。
他规定了一群类说必须遵守的规则。需要被继承,所以用public
属性:public static final
方法:public abstract
命名:IXXX,用“I”区别普通类文件
接口的引用可以指向实现了接口的对象

匿名内部类来实现接口方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
IPlayGame p1=new SmartPhone();
p1.PlayGame();
IPlayGame p2=new PSP();
p2.PlayGame();
IPlayGame p3=new IPlayGame(){
@Override
public void PlayGame() {
// TODO Auto-generated method stub
System.out.println("p3使用匿名内部类实现");
}
};
p3.PlayGame();
new IPlayGame(){
@Override
public void PlayGame() {
// TODO Auto-generated method stub
System.out.println("使用匿名内部类实现");
}
}.PlayGame();