抽象类与抽象方法的定义
抽象类的继承
抽象类的调用
package com.__01Study.javase.demo12;
/*抽象类定义小结
* 1抽象类通常包含绝大多数是抽象方法,也可以是普通方法
* 2.抽象类就是用来被继承的,所以不能使用final修饰
* 3.抽象类不能被实例化,必须依赖子类所进行,不能被new
* */
//抽象类:对类的抽象,更高的层次抽象组件
public abstract class Animal {//不能被final所修饰,final是最终的不可被修改,不可被继承的
/*抽象方法definition小结
* 抽象方法没有方法体,也就没有具体的实际功能
* 一般使用public或者protected修饰或
* */
//抽象方法
public abstract void run();//不能被static所修饰,abstract具体还是体现在对象(实例)上
public abstract void eat();
// public abstract String name;没有抽象属性这一说
//普通方法
public void say(){
System.out.println("嗷呜");
}
private void name(){
System.out.println("辛巴");
}
//属性
private String name = "辛巴";
//构造器
public Animal() {
}
public Animal(String name) {
this.name = name;
}
}
/*package com.__01Study.javase.demo12;
*//**
1.抽象类与抽象方法的定义
2.继承抽象类
*//*
public class Lion extends Animal {//报错原因:继承抽象类必须对抽象方法进行具体的实现
// 创建内部抽象类
public abstract class Bird extends Animal{
// 重写抽象父类方法
@Override
public void run() {
System.out.println("我不擅长跑步,但我会飞");
}
@Override
public void eat() {
System.out.println("我擅长使用喙和爪子来捕捉食物");
}
// 定义抽象方法
public abstract void fly();//在抽象子类中科院继续添加抽象方法,也可以是普通方法
}
//重写之后类就不会报错
public class A{}
@Override
public void run() {
System.out.println("我是狮子,我用四条腿进行奔跑");
}
@Override
public void eat() {
System.out.println("我是狮子,我用牙齿撕咬猎物");
}
//创建构造器调用父类有参构造器
public Lion() {
super.();//使用super关键字调用父类无参构造器
}
}*/
/*抽象类继承小结
1.非抽象类想要继承抽象类必须实现对抽象类所以抽象方法的具体实现(重写)
2.抽象派生类可以直接继承抽象基类,不必实现抽象方法,当然也可以实现
3.在抽象子类中也支持创建抽象方法和普通方法
4.抽象类对象的实例化必须通过非抽象子类进行创建
5.抽象类对象都是上转型对象
*/
/*
public class AB{
外部类不允许使用public修饰时
}*/
/*
package com.__01Study.javase;
import com.__01Study.javase.demo12.Animal;
import com.__01Study.javase.demo12.Lion;
public class Application {
public static void main(String[] args) {
// Animal animal = new Animal();抽象类不能被实例化
Animal animal = new Lion();
animal.eat();
animal.run();
animal.say();
// animal.name();报错,所以类型转化引用的内存地址还是Lion的
Lion lion = new Lion();
lion.eat();
lion.run();
}
}*/