final笔记

final
abstract  --》 抽象




动物 有行为,run


Tiger  --》四个脚跑
鱼     --》 鳍 游
鸟     --》 翅膀 飞


在某些情况下,我们不同的子类有不一样的实现行为,如果子类不重写父类的方法, 会导致行为不完善。
例如对于动物来说,所有的动物都有跑 run的方法
但是每一个不同种类的动物,都有不一样的run的实现,有时候我们需要强制性让子类方法重写。


通过abstract关键字


(1)对于方法来说:加上了抽象关键字abstract之后,这个方法本身就没有意义,只需要让别人知道我这个方法的声明
如何来区分一个方法:(1)返回值 (2)方法名 (3)形参列表
abstract void run();


(2) 有抽象方法的类,一定是抽象类
抽象类,不一定有抽象方法


如果类中的方法用abstract修饰了,那么这个类本身也要用abstract修饰,成为抽象类


(3)抽象类 不允许被实例化


 (4) 抽象类 是否可以有构造方法? 是的
 子类可以通过super调用父类的构造方法,对从父类继承的属性,进行初始化


 (5)抽象关键字,是否可以和final关键字一起使用?
 不能,因为abstract关键字 是要求子类一定要重写父类的方法,但是final是不允许重写的


 (6)抽象关键字,是否可以和private关键字一起使用?
 不能,因为private是私有的,不能被继承的内容,代表根本不存在方法重写,因此不能一起使用


 (7)抽象关键字,是否可以和static一起使用?
 不能,因为static是静态修饰符,代表不需要实例化对象,直接用类名就可以调用方法, 那么如果是抽象方法,没有方法实现
 调用方法会出错,所以编译器禁止 abstract和static一起使用


 (8) 构造方法不允许被继承,所以也没有重写, 不能用abstract修饰












*/
class Test
{
public static void main(String[] args) 
{
Tiger t = new Tiger("华南虎", 2);

t.run();


Fish f = new Fish();
f.setStrain("鲫鱼");
f.run();




}






}


abstract class Animal
{
private String strain;
private int age;


public Animal(){


}


public Animal(String strain, int age){


this.strain = strain;
this.age = age;


}


    //构造方法不允许被继承,所以也没有重写, 不能用abstract修饰
//abstract public Animal(String strain);




//给定setter 和 getter
public void setStrain(String strain){


this.strain = strain;


}


public void setAge(int age){


this.age = age;
}


public String getStrain(){


return this.strain;


}


public int getAge(){


return this.age;


}


/*
void run(){


System.out.println(strain + "种类的动物在跑");


}
*/
abstract void run();


// Animal.test();
//abstract static void test();


}




class Tiger extends Animal
{


public Tiger(String strain, int age){


super(strain, age);
}

void run(){


System.out.println(getStrain() + "老虎四个脚在跑");




}

}


class Fish extends Animal
{
void run(){


System.out.println("鱼在水里游");




}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值