Core Java第八章知识点总结——三个修饰符
2012-08-12 10:18
627 查看
Core Java第八章知识点总结——三个修饰符
知识点预览
static修饰符
final修饰符
abstract修饰符
static修饰符
1.static修饰符可以修饰什么
属性
方法
静态代码块
2. static修饰属性
a) static可以修饰属性(静态属性),不可以修饰局部变量
TestStatic1
b) static修饰属性的特点
i. static修饰的属性全类公有 TestStatic
ii. static修饰的属性可以通过类名访问 MyValue.b
iii. static修饰的属性也叫做类变量
iv. static修饰的属性什么时候被初始化
类加载的时候初始化static修饰的变量
使用类之前,一个类只加载一次
.class------->内存------->JVM内存------->对象
私有访问修饰符 private
2个方法 获得 设置
3. static修饰方法
a)static修饰的方法称为静态方法 public static 和static public均可
b) 静态方法可以通过类名调用 TestStaticMethod.test();
c) 非静态方无论属性和方法是否是静态的都可以访问
d)静态方法只能访问静态属性和静态方法 TestStaticMethod3
e) 静态方法中不能使用this关键字
f)非静态方法只能覆盖非静态方法
g)静态方法只能覆盖静态方法,但是没有多态 TestStaticOverride
4. 静态代码块
a) 静态代码块的概念
在类加载时执行静态代码块的内容
static{} 一般是对资源操作的内容
final修饰符
1. final修饰符可以修饰什么
a) 变量
b) 方法
c) 类
2. final修饰变量
a) final修饰变量(属性、局部变量)
一旦赋值其值不可改变
b)final修饰局部变量----->常量(以大写形式声明)
TestFinalLocalVar1
TestFinalLocalVar2
final MyClass 引用存储的地址不可变
3. final修饰属性
a) final修饰属性时,必须对属性显示赋值或者提供构造方法对属性赋值
构造得到重载必须对属性赋值
不能同时采用显示赋值或者提供构造方法对属性赋值
b) final static一起修饰属性(如果是final修饰变量,推荐一起使用)
单独的final------->浪费资源,没有意义
static final intI = 10;//减少内存占用
4. final修饰方法和类(不能被改变)
a) final修饰符修饰的方法不能被子类覆盖
b) final修饰符修饰的类不能被继承
abstract修饰符
1. abstract修饰符可以修饰什么
类
方法
2. abstract修饰符修饰类
a) abstract修饰符修饰的类叫做抽象类
abstract class
b) 抽象类的特点
i. 抽象类可以用于声明,但不允许创建对象
MyClass m1;//正确
m1 = new MyClass;//错误
ii.抽象类可以被子类继承,从而创建子类对象
3.抽象方法
a) abstract修饰的方法叫做抽象方法
只有声明没有实现
b) 抽象方法的特点
i. 拥有抽象方法的类必须是抽象类
ii. 抽象类不一定有抽象方法
iii. 抽象方法由子类实现
4. 抽象的作用
抽象类是更高层次的抽象
子类共性的方法抽取成抽象方法,形成一种概念性质的类,抽象方法由其子类实现
知识点预览
static修饰符
final修饰符
abstract修饰符
static修饰符
1.static修饰符可以修饰什么
属性
方法
静态代码块
2. static修饰属性
a) static可以修饰属性(静态属性),不可以修饰局部变量
TestStatic1
b) static修饰属性的特点
i. static修饰的属性全类公有 TestStatic
package chp8.ex01; /** * * 说明:本程序演示了static修饰属性的用法 全类共有 */ class MyValue{ int a; static int b;//静态属性 } public class TestStatic{ public static void main(String args[]){ MyValue mv1 = new MyValue(); MyValue mv2 = new MyValue(); mv1.a = 100; mv1.b = 200; mv2.a = 300; mv2.b = 400; System.out.println(mv1.a); System.out.println(mv1.b);//400 System.out.println(mv2.a); System.out.println(mv2.b);//400 MyValue.b 亦可 } }
ii. static修饰的属性可以通过类名访问 MyValue.b
iii. static修饰的属性也叫做类变量
iv. static修饰的属性什么时候被初始化
类加载的时候初始化static修饰的变量
使用类之前,一个类只加载一次
.class------->内存------->JVM内存------->对象
私有访问修饰符 private
2个方法 获得 设置
3. static修饰方法
a)static修饰的方法称为静态方法 public static 和static public均可
b) 静态方法可以通过类名调用 TestStaticMethod.test();
c) 非静态方无论属性和方法是否是静态的都可以访问
d)静态方法只能访问静态属性和静态方法 TestStaticMethod3
package chp8.ex04; /** * * 说明:本程序演示了static修饰方法的用法 */ public class TestStaticMethod3 { static int a= 10; int b = 20; public void test1(){} public static void test2(){} //静态方法只能访问静态属性和静态方法 public static void test3(){ System.out.println(a); //System.out.println(b); //错误 //test1(); //错误 test2(); } }
e) 静态方法中不能使用this关键字
f)非静态方法只能覆盖非静态方法
g)静态方法只能覆盖静态方法,但是没有多态 TestStaticOverride
package chp8.ex05; /** * * 说明:本程序演示了静态方法的覆盖用法 */ public class TestStaticOverride { public static void main(String args[]){ Super s = new Sub(); //输出this is super s.m();//等效于 Super.m() } } class Super{ public static void m(){ System.out.println("this is super"); } } class Sub extends Super{ //静态方法只能覆盖静态方法,但是没有多态 public static void m(){ System.out.println("this is sub"); } }
4. 静态代码块
a) 静态代码块的概念
在类加载时执行静态代码块的内容
static{} 一般是对资源操作的内容
final修饰符
1. final修饰符可以修饰什么
a) 变量
b) 方法
c) 类
2. final修饰变量
a) final修饰变量(属性、局部变量)
一旦赋值其值不可改变
b)final修饰局部变量----->常量(以大写形式声明)
TestFinalLocalVar1
package chp8.ex07; /** * * 说明:本程序演示了final修饰属性的用法 */ public class TestFinalLocalVar1 { public static void main(String args[]){ final int A = 10;//一旦赋值 其值不可改变 //A++ //错误 } }
TestFinalLocalVar2
package chp8.ex08; /** * * 说明:本程序演示了final修饰类变量的用法 */ public class TestFinalLocalVar2 { public static void main(String args[]){ final MyClass M1 = new MyClass();//final MyClass 引用存储的地址不可变 但是类的属性值可以改变 M1.value = 20; M1.value = 30; //The final local variable M1 cannot be assigned. It must be blank and not using a compound assignment //M1 = new MyClass();//错误 } } class MyClass{ int value; }
final MyClass 引用存储的地址不可变
3. final修饰属性
a) final修饰属性时,必须对属性显示赋值或者提供构造方法对属性赋值
构造得到重载必须对属性赋值
不能同时采用显示赋值或者提供构造方法对属性赋值
b) final static一起修饰属性(如果是final修饰变量,推荐一起使用)
单独的final------->浪费资源,没有意义
static final intI = 10;//减少内存占用
4. final修饰方法和类(不能被改变)
a) final修饰符修饰的方法不能被子类覆盖
b) final修饰符修饰的类不能被继承
abstract修饰符
1. abstract修饰符可以修饰什么
类
方法
2. abstract修饰符修饰类
a) abstract修饰符修饰的类叫做抽象类
abstract class
b) 抽象类的特点
i. 抽象类可以用于声明,但不允许创建对象
MyClass m1;//正确
m1 = new MyClass;//错误
ii.抽象类可以被子类继承,从而创建子类对象
3.抽象方法
a) abstract修饰的方法叫做抽象方法
只有声明没有实现
b) 抽象方法的特点
i. 拥有抽象方法的类必须是抽象类
ii. 抽象类不一定有抽象方法
iii. 抽象方法由子类实现
4. 抽象的作用
抽象类是更高层次的抽象
子类共性的方法抽取成抽象方法,形成一种概念性质的类,抽象方法由其子类实现
package chp8.ex15; /** * * 说明:本程序演示了抽象类的具体抽象 * 抽象类是更高层次的抽象 * 子类共性的方法抽取成抽象方法,形成一种概念性质的类,抽象方法由其子类实现 */ public class TestAbstract { public static void main(String args[]){ Shape s = new Circle(3); double grith = s.girth(); System.out.println("grith is "+grith); } } //抽象类 abstract class Shape{ public abstract double girth(); public abstract double area(); } //子类 实现其抽象方法 class Circle extends Shape{ private double r; private static final double PI = 3.1415926; public Circle(double r){ this.r = r; } public double girth(){ return 2*PI*r; } public double area(){ return PI*r*r; } } //子类 实现其抽象方法 class Rect extends Shape{ private double a; private double b; public Rect(double a, double b){ this.a = a; this.b = b; } public double girth(){ return 2*(a+b); } public double area(){ return a*b; } }
相关文章推荐
- java知识点总结之四修饰符与类的成员
- Core Java 第一章知识点总结
- Core Java第十七章知识点总结——JDK新特性——完结篇
- Core Java第十章知识点总结——Object类 包装类 内部类
- Core Java第十四章知识点总结——文件与I/O流
- java笔记第八章之三个修饰符
- java知识点总结之三修饰符与类
- Core Java第二章知识点总结(二)
- Core Java第七章知识点总结——封装、继承、多态
- Core Java第三章知识点总结——程序的流程控制
- Core Java第十五章知识点总结——网络编程
- Core Java第六章知识点总结——面向对象
- Core Java第九章知识点总结——接口
- Core Java第四章知识点总结——函数
- Core Java第十二章知识点总结——异常处理
- Core Java第十六章知识点总结——反射
- CoreJava知识点总结
- java基础技术知识点总结——访问修饰符
- Core Java第十三章知识点总结——线程
- Core Java第十章知识点总结——Object类 包装类 内部类