抽象类
抽象类:抽象类是程勋设计的结果
特点:
1.通过java关键字 abstract实现
2.可以修饰方法或者类
3.抽象类中 可以 没有抽象方法(由子类去实现) ---外界不能实例化
4.如果类中没有抽象方法 那该类必须定义一个抽象类
5.子类继承了抽象类后,要么是一个抽象类,要么将所有抽象的方法重写
6.用于多态中
7.抽象类不可以被实例化
public class C4 {
public static void main(String[] args) {
//Animal a = new Animal;//抽象不能被new
Animal a = new Cat();
a.eat();//声明是用父类的,但是方法体还是子类的,如果没重写就是父类的
a.sleep();
}
}
//1.抽象是一个特殊类 特殊在 类里可以有普通方法 还可以有抽象方法
abstract class Animal {
//没有方法体的方法 叫 抽象方法,用abstract修饰
abstract public void eat();//有声明,没有方法体
//方法要不要抽象 --看需要不需要 提供方法体
public void sleep() {
System.out.println("sleep");
}
}
//子类要么 继承抽象类,然后就是一个抽象类
abstract class Dog extends Animal {
}
//要么重写抽象方法
class Cat extends Animal {
@Override
public void eat() {
System.out.println("no eat");
}
}
----------------------------------------------------
例2
//抽象类的使用
public class C5 {
public static void main(String[] args) {
Pig p = new Pig();
System.out.println(p.name);
System.out.println(p.PI);
}
}
abstract class Animal1{
public Animal1(){
System.out.println("父类 无参构造");
//抽象类里 可有构造方法 ---有什么用/
//给子类 new
}
//抽象类里 可以有变量吗? 可以有常量吗 ? -- 都可以有
String name = "123";//可有变量
public static final double PI = 3.1415;//可有参量
//抽象类里可以有普通方法吗? 可以有抽象方法吗? -- 都可以有
//抽象类里可以都是普通方法吗 ? 可以都是抽象方法吗? -- 都可以有
}
class Pig extends Animal1{
//默认有个无参构造
/*public Pig(){
//默认有个super();
System.out.println("子类 无参");
}*/
}
浙公网安备 33010602011771号