Java 抽象 abstract

//学习继承、多态。
//多态的前提条件
//1、继承关系
//2、子类要重写父类的方法
//3、父类引用指向子类的对象。

//我们明知子类有自己特定的实现
//(一定是对父类的实现不满满意)
//在这种情况下,我们可以让父类不去实现这个方法.
//父类只声明有这个方法。而且声明这个方法由子类实现。
//例如动物的 叫 bark()
//我们明知,狗叫是汪汪,鸡叫:狗狗狗,
//猫叫喵喵喵,老鼠叫:吱吱吱
//驴叫:儿啊,儿啊
//马叫:驴~~

//父类是通过抽象方法来实现 方法只声明不实现。
//抽象方法是 用关键字abstract修饰的方法。
//被abstract修饰的方法 不能有方法体。
//如果一个类里面包含 abstract方法,
//那么这个类就具有2个特点
//1、这个类必须定义成抽象类。
// 用abstract修饰的类。
//2、这个类不能实例化。(不能创建对象)
// 因为你 有些方法没有实现。
// 一旦创建对象,就说名对象具备类所定义的各种行为
// 因为你有些行为没有实现,因此会影响对象的正常使用
// 所以java不循序对抽象类创建对象
// 也就是说,你不能 new 抽象类(参数);

//Animal a = new Animal();

Cat c = new Cat();
c.eat();
c.bark();

//虽然你不能对抽象类创建对象,但是你可以使用多态。
//你可以定义抽象类型的引用;
Animal c2 = new Cat();
c2.eat();
c2.bark();
Animal c3 = new Dog();
c3.eat();
c3.bark();
//Animal c4 = new Chicken();
Animal c5 = new Hen();
c5.eat();
c5.bark();

//抽象类与普通类的区别:
//项目名称 抽象类 普通类
//对象属性 有 有
//类属性 有 有
//对象方法 有 有
//类方法 有 有
//抽象方法 可有可无 没有
//能否被继承 可以(必须) 可以
//能否实例化 不能 能
//能否多态 能 能

public abstract class Animal {
private double height;
private double weight;
public static int classProperty;

//抽象方法
//只有声明,没有实现(也不能实现)。
//如果一个类包含抽象方法,类必须定义为抽象类。
public abstract void bark();
public abstract void eat();

public void testMethod() {
	System.out.println("对象方法");
}

public static void staticMethod() {
	System.out.println("类方法");
}

//如果子类继承了抽象类,那么子类必须做出2个选择
//1、实现父类继承过来的 全部 抽象方法。
//2、不全部实现或者一个都不实现。
// —子类也必须定义成抽象类,由这个子类的子类去继承大业。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值