抽象类
具体变现
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法。
用abstract修饰的类就是抽象类。如果某个类中包含有抽象方法,那么该类就必须定义成抽象类。
特点:
抽象类不能被实例化,但可以有构造函数,因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
抽象类只能用作基类,表示的是一种继承关系。继承抽象类的非抽象类必须实现其中的所有抽象方法,而已实现方法的参数、返回值要和抽象类中的方法一样。否则,该类也必须声明为抽象类。
抽象方法
抽象方法是一种特殊的方法:它只有声明,而没有具体的实现
抽象方法必须用abstract关键字进行修饰
具体代码实现
package com.xufeihu.javaoop.day4.ChouXiangLei;
public abstract class Animal {
private String name ;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//抽象类
public abstract void eat();
}
多态
概念:同一种事物,在不同时刻表现不同的状态
存在的必要条件:
要有继承(包括接口的实现)(前提条件)
要有重写(前提条件)
父类引用指向子类对象
具体代码实现
package com.xufeihu.javaoop.day6;
public class Test1 {
private Object Animal;
//多态的使用
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
Test1 test1 = new Test1();
test1.FeedAnimal(dog);
test1.FeedAnimal(cat);
}
public void FeedAnimal(Animal animal){
animal.eat();
if(Animal instanceof Dog) {
Animal dog = new Dog();
Dog X = (Dog) dog;
X.Play();
}
if (Animal instanceof Cat) {
Animal cat = new Cat();
Cat Z = (Cat) cat;
Z.MaoPu();
}
}
}
final关键字
用于声明属性,方法
定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。
方法:子类里不可被覆盖。
类:不能被定义为抽象类或是接口,不可被继承。
具体变现:
package com.xufeihu.javaoop.day7;
public class FinalDemo {
//final static int a =10;
//使用final修饰常量时默认使用static进行修饰
final static int a =10;
// final int count;
// public FinalDemo(int count) {
// this.count = count;
// } // 使用之中方法进行final修饰的的常量 会是默认的无参方法失效 从而使继承出现错误
// 如果直接继承 则调用对象是需直接赋值
public final void Eat() {
System.out.println("吃饭");
}
//防止数据在方法体中被修改。
public void Sleep(final int a) {
int c;
// a=16;具体实现 修饰后无法修改
c = a +12;
System.out.println(c);
}
}