二、Java基本程序结构
1、数据类型
2、运算符
3、循环语句
三、类
四、继承和接口
1、多态
2、抽象类
通常作为类的顶层,不能实例化,可以有抽象方法,也可以有实际方法。抽象方法必须存在于抽象类中
3、接口定义
Java 中使用interface 关键字来定义一个接口,在Java 8 之前,接口中只定义方法而没有实现,其具体的方法需要在实现该接口的类中完成。Java 8 对接口进行了增强,接口中可以实现一些特定的方法。接口中的方法默认public 属性方法不能定义为static 类型(Java 8 中可以定义静态方法,但必须在接口中实现)。接口也可以定义域的成员,通常情况下,域成员作为常量被使用。接口的域成员默认为public static final 形式。
接口不能用new 进行实例化,但可以声明接口变量,并将接口的类赋值于该变量,一个类要实现某个接口,需要使用implements 关键字,需要实现多个接口时,接口名字间用“,”隔开即可。
public interface Song {
public String sound();
}
public class Cat implements Song{
public String sound(){
return "miao miao miao";
}
}
public class Dog implements Song {
public String sound() {
return "wang wang wang...";
}
}
测试接口:
import java.util.ArrayList;
import java.util.List;
public class AnimalSong {
public static void main(String[] args) {
List<Song>animalList=new ArrayList<Song>();
animalList.add(new Cat());
animalList.add(new Dog());
for (Song animal:animalList){
System.out.println(animal.sound());
}
}
}
输出:
miao miao miao
wang wang wang...
4、接口增强
Java 8 对接口的功能进行了增强,接口中可以有静态方法和缺省方法,缺省方法为在方法名前加上default 关键字,再对其进行实现。
public interface ITestInterface {
public static void hello() {
System.out.println("hello world!");
}
default public void sayHello(String name) {
System.out.println("hello" + name);
}
public void hi(String name);
}
public class TestInterfaceImpl implements ITestInterface {
public void hi(String name) {
ITestInterface.hello();
this.sayHello("tom");
}
public void sayHello(String name) {
System.out.println("hi" + name);
}
public static void main(String[] args) {
TestInterfaceImpl s = new TestInterfaceImpl();
s.sayHello("111");
}
}
输出:(调用类中sayHello 函数,如果类中没有sayHello 函数就调用接口中sayHello 函数)
hi111
5、clone(实现的只是浅拷贝)