/*
instanceof关键字: 判断一个对象是否属于指定 的类型。
instanceof关键字的使用前提: 判断的对象与类型必须存在继承或者实现关系。
instanceof的使用格式:
对象 instanceof 类名
final(最终)
fianl关键字要注意的细节:
1. final关键字修饰一个基本类型变量时,其值不能重复赋值。
2. final修饰一个引用类型变量时,该变量不能重新指向新的对象。
3. final修饰一个方法的时候,该方法不能被重写。
4. final 修饰一个类的时候,该类不能 被继承。
抽象类:
抽象类的应用场景:
描述一类事物的 时候,发现该事物确实存在某种行为,但是该种行为目前是
不具体的,那么就可以抽取这种行为(方法)的声明,不去实现该方法,这时候使用
抽象。
抽象类要注意的细节:
1. 如果一个方法没有方法体,那么该方法必须使用abstract修饰
2. 如果一个类含有抽象方法,那么该类必须使用abstract修饰,或者使用接口。
3. 非抽象类继承抽象类 的时候,必须要把抽象类中的所有抽象飞方法实现。
4. 抽象类可以存在抽象方法与非抽象方法。
5. 抽象类可以不存在抽象方法。
6. 抽象类不能创建对象,但是抽象类有构造函数,其构造函数是提供给子类使用的。
abstract不能与以下关键字配合使用:
1. abstract 不能与private 配合使用。
2. abstract 不能与final配合使用
3. abstract 不能与static配合使用。
接口:
接口的定义格式:
interface 接口名{
成员变量
函数
}
接口要注意的细节:
1. 接口中的成员变量都是常量,默认的修饰符是public static final.
2. 接口中方法全部都是抽象方法,默认的修饰符 public abstract。
3. 非抽象类实现接口的时候,必须要把接口中的所有方法实现。
4. 接口是不能创建对象,而且是没有构造函数的。
接口的作用:
1. 程序的解耦。
2. 定义约束规范
3. 拓展功能。
接口与类 : 实现。
一个类可以实现多个接口
接口与接口的关系: 继承
一个接口可以继承多个接口。
*/
class Demo1 {
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
关于多态的复习
/*
多态: 父类的引用类型变量指向了子类的对象 或者是接口的引用类型变量指向了接口实现类对象。
多态的前提: 必须存在继承或者实现关系。
多态要注意的细节:
1. 多态情况下,子父类存在同名的成员变量时,默认是访问父类的成员变量。
2. 多态情况下,子父类存在同名的非静态成员函数时,默认是访问子类的成员函数。
3. 多态情况下,子父类存在同名的静态成员函数时,默认是访问父类的成员函数
4. 多态情况下,不能访问子类特有的成员。
*/
abstract class Animal{
String name;
String color;
static int age = 10;
public Animal(String name,String color){
this.name = name;
this.color = color;
}
public abstract void run();
}
class Dog extends Animal{
static int age = 20;
public Dog(String name,String color){
super(name,color);
}
public void run(){
System.out.println(name+"四条腿跑...");
}
public void bite(){
System.out.println(name+"咬人...");
}
}
class Demo2
{
public static void main(String[] args)
{
//编译看左边:java编译器在编译的时候,会检测引用变量所属的类型是否具备指定的成员,如果不具备编译报错。
Animal a = new Dog("哈士奇","白色"); //父类的引用类型变量指向了子类对象。
//System.out.println("age = "+a.age);
a.bite();
}
}