三个关键字 抽象的(abstract) 静态(static) 最终的(final)一、抽象1.1 什么是抽象似是而非的,像却又不是;具备某种对象的特征,但不完整。
二、 抽象的(abstract)2.2 不该被创建的对象三、抽象类、抽象方法3.1 抽象类应用:abstract修饰类,此类不能new对象。
被abstract修饰的类,称为抽象类。 抽象类意为不够完整的类、不够具体的类, 抽象类对象无法独立存在,即不能new对象。
3.2 抽象类的作用作用: 可被子类继承,提供共性属性和方法。 可声明为引用,更自然的使用多态。
经验: 抽象父类,可作为子类的组成部分。 依附于子类对象存在。 由父类共性 子类独有组成完整的子类对象。
3.3 不该被实现的方法需求: Dog中的eat()应输出“狗在狗粮”。 Cat中的eat()应输出“猫在猫粮”。
3.4 抽象方法public class Test {
public static void main(String[] args) {
//Animal animal=new Animal();
Animal dog=new Dog();
Animal cat=new Cat();
dog.eat();
cat.eat();
}
}
//动物类(父类)
abstract class Animal {
String breed;//品种
int age;//年龄
String sex;//性别
//吃(抽象方法)
public abstract void eat();
//睡
public void sleep() {
System.out.println("睡觉觉...");
}
}
//狗类(子类)继承父类
class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗吃狗粮");
}
}
//猫类(子类)继承父类
class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃猫粮");
}
} 四、静态的(static)4.3 什么是静态概念: 静态(static)可以修饰属性和方法。 称为静态属性(类属性)、静态方法(类方法)。 静态成员是全类所有对象共享的成员。 在全类中只有一份,不因创建多个对象而产生多份。 不必创建对象,可直接通过类名访问。
4.4 课堂案例练习:统计一个类的对象被创建过多少次?
//创建一个学生类
public class Student {
static int count;
public Student() {
//count用于统计被创建的次数
count ;
} public static void main(String[] args) {//创建对象
Student a= new Student();
new Student();
new Student();
new Student();
new Student();
new Student();
new Student();
new Student();
System.out.println(a.count);
} 五、静态方法、类加载5.1 静态方法5.2 静态的特点5.3 动态代码块示例:
public class xxx {
public static void main(String[] args) {
new test();
}
} class test {
int b = 200;
{
System.out.println(b);
System.out.println("这是动态代码块");
}
} 5.4 类加载JVM首次使用某个类时,需通过CLASSPATH查找该类的.class文件。
5.4 静态代码块示例:
public class xxx {
public static void main(String[] args) {
new test();
}
}
class test {
static int a = 100;
int b = 200;
{
System.out.println(b);
System.out.println("这是动态代码块");
}
static {
//静态代码块
System.out.println(a);
System.out.println("静态代码块");
}
public test() {
System.out.println("这是构造方法");
}
} 运行结果: 观察输出顺序 
六、最终的(final)6.1 什么是最终概念:最后的,不可更改的。
final可修饰的内容: 类(最终类) 方法(最终方法) 变量(最终变量)
6.2 final类final修饰方法:此方法不能被覆盖。 意为最终方法,不支持子类以覆盖的形式修改。
6.3 final变量
final修饰变量:此变量值不能被改变(常量)。
所有final修饰的变量只能赋值一次,值不允许改变。
6.4 实例常量
6.5 静态常量
静态常量不再提供默认值,必须手动赋予初始值。 赋值时机:显示初始化、静态代码块。
6.6 总结final修饰类:此类不能被继承。 final修饰方法:此方法不能被覆盖。
final修饰变量:此变量值不能被改变。(无初始值、只允许赋值一次)。 局部常量:显示初始化。 实例常量:显示初始化、动态代码块、构造方法。。 静态常量:显示初始化、静态代码块。 实例常量:显示初始化、动态代码块、构造方法.静态常量:显示初始化、静态代码块.
基本类型常量:值不可变。
引用类型常量:地址不可变。地址里面的内容可以改变 示例:
public class text {
public static void main(String[] args) {
final int [] a= {7,8,9};
System.out.println("赋值前:");
for(int i=0;i<a.length;i ) {
System.out.print(a[i] "\t\t");
a[i]=i;
}
System.out.println();
System.out.println("赋值后:");
for(int j:a) {
System.out.print(j "\t\t");
}
}
} 运行结果: 
|