1.抽象类/抽象方法
当父类的一些方法不能确定时,可以用abstract来修饰该方法
abstract class Animal{
String name;
int age;
abstract public void cry();
}
class Cat extends Animal{
public void cry(){//当一个类继承的父类是抽象类的话,需要我们把抽象类中所有方法全部实现
}
}
注:抽象类不能被实例化 Animal an = new Animal(); 错
抽象类不一定要包含abstract 方法,可以有实现了的方法
一旦包含了abstract 方法,则这个类必须声明为abstract
抽象方法不能有主体 abstract ppublic void cry(){} 错
2.接口 interface implements
接口就是给出一些没有内容的方法,封装到一起,到某个类需要用的时候,再根据具体情况把这些方法写出来
注:接口不能被实例化
接口中所有的方法都不能有主体 void main(){};
一个类可以实现多个接口
接口中可以有变量(变量不能用private 和protected修饰)
a.接口中的变量,本质上都是static,不管你加不加static修饰,而且是final
b.经常把常用的变量,定义在接口中,作为全局变量使用 访问 接口名 变量名
一个接口不能继承其他的类,但是可以继承别的接口
当一个类实现接口,要求该类把这个接口的方法统统实现。
interface Usb{
int a=1; int a;错
public void start();
public void stop();
}
interface Aaa{
public void Eee();
}
interface kkk extends Aaa{
public void Cry();
}
class camera implements Usb{
public void start(){}
public void stop(){}
}
class Phone implements Usb,Kkk{
public void start(){}
public void stop(){}
public void cry(){}
public void Eee(){}
}
class Computer{
public void useUsb(Usb usb){
Usb.start();
Usb.stop();
}
}
Computer computer = new Computer();
Camera camera = new Camera();
Phone phone = new Phone();
computer.useUsb(camera);
computer.useUsb(phone);
*********class littleMonkey extends Monkey implements Fish,Bird{}
3.
interface Car{
String getName();
int getPrice();
}
class BWM implements Car{
public String getName(){
return "BWM";
}
public int getPrice(){
return 3000;
}
}
class Chery implements Car{
public String getName(){
return "Chery";
}
public int getPrice(){
return 2000;
}
}
public class CarShop{
private int money = 0;
public void sellCar(Car car){
System.out.println("车型"+car.getName()+"单价"+car.getPrice);
monkey+=car.getPrice();
}
public int getMoney(){
return money;
}
public static void main(String[] args){
CarShop shop = new CarShop();
shop.sellCar(new BWM());
shop.sellCar(new Chery());
System.out.println("总收入:" + shop.getMoney());
}
}
4.final
不希望父类的某个方法被子类覆盖
不希望某个变量值被修改 final 修饰必须给初值
不希望类别覆盖