p493 抽象类
p494 抽象类无法创建对象但有构造方法
final修饰的类无法被继承,但是抽象类存在的意义就是被继承(抽象类无法实例化对象),所以抽象类前面不能加abstract。
p495 抽象类基础语法以及抽象方法
//这就是一个抽象方法
public abstract void doSome();
p496 回顾final关键字和抽象类
p497 非抽象类继承抽象类必须将抽象方法实现
public class abstractTest02 {
public static void main(String[] args) {
Bird b = new Bird();
b.move();
//使用多态
//这就是面向抽象编程。
//以后就是a.xxxx调用
//a的类型是抽象的,Animal是抽象的
//面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力
Animal a = new Bird();//向上转型
//注意分析:
//编译的时候,下面的move()是谁的:
//Animal的
//编译的时候,下面的move()是谁的:
//Bird
//编父运子
a.move();
//多态
Animal x = new Cat();
x.move();
}
}
//抽象类
abstract class Animal{
//抽象方法
public abstract void move();
}
//非抽象类继承抽象类
class Bird extends Animal{
//重写抽象类。需要将从父类中继承过来的抽象方法进行覆盖(重写)
public void move(){
System.out.println("鸟儿在飞翔");
}
}
class Cat extends Animal{
//重写抽象类。需要将从父类中继承过来的抽象方法进行覆盖(重写)
public void move(){
System.out.println("猫在走猫步");
}
}
p498 总结抽象类
以后写代码的时候能用多态就用多态。
p499 接口的基础语法
p500-p502 接口的基础语法
public class abstractTest03 {
public static void main(String[] args) {
//访问接口中的常量
System.out.println(MyMath.PI);
//接口中的常量不能修改,报错
//MyMath.PI = 2.5;
}
}
/**
* 1、接口也是一种抽象数据类型
* 2、接口中的方法是完全抽象的
* 3、【修饰符列表】 interface 接口名{}
* 4、接口支持多继承
* 5、接口中只包含常量+抽象方法
* 6、接口中所有元素都是public修饰的(都是公开的)
* 7、接口中的抽象方法的public abstract可以省略
* 8、接口中的常量的public abstract可以省略
* 9、接口中的方法不能有方法体
*/
//定义接口
interface A{
}
//接口支持继承
interface B extends A{
}
//一个接口可以继承多个接口(支持多继承)
interface C extends A,B{
}
//我的数学接口
interface MyMath{
//常量,前面的修饰符类列表也可以省略
//public static final double PI = 3.1415926;
double PI = 3.1415926;
//抽象方法
//public abstract int sum(int a,int b);
//接口中既然都是抽象方法,那么public abstract可以省略
//加法的抽象方法
int sum(int a ,int b);
//减法的抽象方法
int sub(int a ,int b);
//接口中的方法不能有方法体
//void doSome(){
//}
}
p503 回顾昨天内容