八、三个修饰符

三个修饰符

 

static修饰符 

 

对象共享这种static定义的东西(包含属性,方法和代码块)。

  

 

修饰:1.属性

访问方式可以通过对象.属性名方式访问,也可以通过类名.属性名访问

 

static修饰的属性什么时候被初始化?

类变量在类加载的时候就已经初始化了,而类加载在创建对象之前。

 

public class TestStaticField {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

//System.out.println("学校地址:"+Student.address);

Student s=new Student();

Student s1=new Student();

s1.address="烟台大学";

 

System.out.println("学校地址:"+s1.address);

System.out.println("学校地址:"+s.address);

}

 

}

 

 

 

/**

 * 学生类

 */

class Student{

public  static  String address="烟台大学";

private String name;

private int age;

private double score;

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 double getScore() {

return score;

}

public void setScore(double score) {

this.score = score;

}

}

2.方法

非静态方法无论属性和方法是否是静态的都可以访问 

 

 

静态方法只能访问静态属性和静态方法

 

 

静态方法中不能使用this关键字

 

子类静态的方法可以覆盖父类静态的方法,但是失去了多态。

 

 

静态的属性或者方法都是跟类绑定的,而非静态的都是和对象绑定的。

 

3.静态代码块

静态代码块在类加载的时候,可以认为是使用类的时候该类内的静态块会执行。

public class TestStatic {

 

 

public static void main(String[] args) {

// TODO Auto-generated method stub

   Student.sleep();

}

 

}

 

class Student{

 static {

System.out.println("---------------");

}

static int age;

String name;

}

 

 

 

 

final修饰符   

 

  final ---最后的,最终的。

1. 修饰变量

实例变量,局部变量。

 

     一旦赋值,他的值就不能改变

     局部变量可以先定义成final,然后在进行赋值,但是只能赋值一次。

final int a;

a=10;

  final修饰属性时,必须对属性显示赋值或提供构造方法对属性赋值 

 

    通过构造方法赋值:class A{

final int  a;

public A(int a){

this.a=a;

}

}

 

   Staticfinal可以结合使用来定义一个常量,并且该常量归类所有。可以通过类名.属性名访问

public static final double PI = 3.14159265358979323846;

 

public class TestFinalVariable {

public static  final int MA=0;//属性如果定义为final要求开始定义的地方就要进行初始化或者也可以不初始化,但是

 

 

public static void main(String[] args) {

// TODO Auto-generated method stub

 

/*final int la;//final修饰的局部变量只能被赋值一次

//修改局部变量的值

la=9;

System.out.println(la);*/

//TestFinalVariable t=new TestFinalVariable(3);

 

System.out.println(TestFinalVariable.MA);

}

 

}

 

 

 Final修饰的变量不能修改,方法不能被重写,类不能被继承,可以和        static联合使用     

 

  

 

 

abstract修饰符

什么是抽象?

不容易出错,没有具体的解决方案,但是提供了一个规范

 

 

 

可以用于类和方法的修饰

1.如果一个类中某个方法是抽象的,这个类就必须是抽象的。

 

abstract class Student{

 static {

System.out.println("---------------");

}

static int age;

 String name;

public  abstract    void study();

public static  void sleep(){

System.out.println("i sleep 8 hours");

}

}

2.一个类里面所有的方法都是非抽象的,这个类也可以声明为abstract

 

3抽象类可以被子类继承,并重写其中的抽象方法

4抽象类不能直接用来创建对象

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值