Java面向对象(2)

1.this关键字

在一个类的方法或构造方法内部,可以使用“this.成员变量名”这样的格式来引用成员变量名,常常用来区分同名的成员变量和局部变量。

package person;

public class person {
    String name;
    int age;
    float hight;

    public person(){

    }
    //this在类中用来表示当前正在访问的对象,this.成员变量名--显示的访问当前对象的成员变量
    public person(String name,int age,float hight){
             this.name=name;
             this.age=age;
             this.hight=hight;
    }
public void show(){
    System.out.println("名字:"+this.name+"  年龄:"+this.age+"  身高:"+this.hight);
        this.work();
}
public void  work(){
    System.out.println("在工作");
}
}
测试代码
package person;

public class persontest {
    public static void main(String[] args) {
        person p1=new person();
        p1.name="zhu";
        p1.age=18;
        p1.hight=160;
        p1.show();
        person p2=new person("wan",19,178);
        p2.show();;
    }
}

 

 

2.static关键字

● static属性 静态属性是类的所有对象共享的,即不管创建了多少个对象,静态属性在内存中 只有一个。

• 静态变量的默认值规则和实例变量一样。

• 静态变量值是所有对象共享。

• 静态变量在本类中,可以在任意方法、代码块、构造器中直接使用。

• 可以通过类名.静态变量直接访问,也可以通过对象.静态变量的方式访问(但 是更推荐使用类名.静态变量的方式)。

package oop02;

public class game {
    String name;
    int price;
    static  int count =0;
     static  String midposition="中路";
     public game(){
         count=count+1;
     }
     public game(String name,int price){
         this.name=name;
         this.price=price;
     }

     public void work(){
         System.out.println("吃兵线");
     }
     public void show(){
         System.out.println("英雄:"+this.name+" 价格:"+this.price);
     }
}
package oop02;

public class gametest {
    public static void main(String[] args) {
        game player1=new game();
            player1.name="小乔";
            player1.price=13888;

        player1.show();
        System.out.println(game.midposition);
        player1.work();
            game player2=new game();
        player2.name="周瑜";
        player2.price=13888;
player2.show();
        System.out.println(game.midposition);
        System.out.println(game.count+"名玩家");
    }
}

 ● 用static修饰的成员方法就是静态方法。

● 静态方法在本类的任意方法、代码块、构造器中都可以直接被调用。

● 静态方法在其他类中可以通过类名.静态方法的方式调用。也可以通过对 象.静态方法的方式调用(但是更推荐使用类名.静态方法的方式)。

● 在static方法内部只能访问类的static修饰的属性或方法,不能访问类的 非static的成员。  

● 因为不需要实例就可以访问static方法,因此static方法内部不能有this, 也不能有super。

package oop02;

public class MyMath {
    public static int Max(int a,int b){

        return (a>b)?a:b;
    }

    public static void main(String[] args) {
        int max=MyMath.Max(12,8);
        System.out.println(max);
    }
}

package oop02;

public class statictestdemo {
    String name;
   static int count;
   public static void test(){
       System.out.println(count);
   }
   public static void test2(){
       System.out.println(name);//静态方法中只能用静态成员变量
   }
}

 

3. 代码块

● 代码块在类中声明,类似一个没有名称的方法体(代码块),

代码分实例块和静态块

实例块:每次创建对象时自动调用

{ //任何符合语法的Java代码 }

静态块:类加载时自动调用,仅一次,与是否创建对象无关。

static { //任何符合语法的Java代码 }

package oop02;

public class demotest {
    static int a=10;
    {
        System.out.println("我是实例代码块,在创建对象时,不需要显式调用,我会自动执行1");
    }
    {
        System.out.println("我是实例代码块,在创建对象时,不需要显式调用,我会自动执行2");
    }
    static {
        System.out.println("我是静态代码块,在类加载时,会自动执行");
    }

    public static void main(String[] args) {

    }
}
package oop02;

public class testdemotest {
    public static void main(String[] args) {
       new demotest();
        new demotest();
        System.out.println(demotest.a);
    }
}

4.包

● 在编写 Java 程序时,随着程序架构越来越大,类的个数也越来越多,这时就会 发现管理程序中维护类名称也是一件很麻烦的事,尤其是一些同名问题的发生。 有时,开发人员还可能需要将处理同一方面的问题的类放在同一个目录下,以 便于管理。

● 为了解决上述问题,Java 引入了包(package)机制,提供了类的多层命名空 间,用于解决类的命名冲突、类文件管理等问题。

● 使用package关键字修饰包

● 每个类属于一个特定的包,所以java中一个类的完整名称等于包名+类名

● 包的作用: 按照不同功能管理类 避免类重名 控制访问权限

● 包(package)的命名规范: 在包名中,可以使用.号来区分包的级别;包名一般情况下是小写 第一级 指该项目的类型,如com,org,gov等, 第二级 指项目所开发或者运行的公司名称,如:oracle,sun,huawei等 第三级 指项目的名称,如:bcms,oa,erp,cms等 第四级 指项目模块的名称,如:bean,action,exception等

● 导入外部包的类,关键字“import” 当在一个类中使用其他包中的类时,需要先使用import关键字导入进来. 只有java.lang包中的类比较特殊,使用时不需要导入.

5.访问权限修饰符

●访问权限修饰符 public protected (default) private

● Java语言有四个权限访问修饰符,权限从大到小依次为:

1)public :公共权限 修饰类、属性、方法。可以在任意类中访问

2)protected:受保护的权限 修饰属性、方法。可以在同包类访问,如果 不是同包类,必须是该类的子类才可以访问。

3)default:同包权限 修饰类、属性、方法。只能在同包的类访问

4)private:私有权限 修饰属性、方法。 只能在本类中访问

package com.ffyc.javaopp.day2.limitdemo1; 
public class Person {
 
    public int pubnum;//公共权限,在任何地方都可以访问
    protected  int pronum;//受保护权限,只能在本类,同包的其他类中使用,不同包的子类
               int defnum;//默认权限,只能在本类,同包的其他类中使用
    private int prinum;//私有权限,只能在本类中使用
 
    public void test(){
 
    }
 
    public static void main(String[] args) {
        Person p = new Person();
        System.out.println(p.pubnum);
        System.out.println(p.pronum);
        System.out.println(p.defnum);
        System.out.println(p.prinum);//私有权限在本类中都可以访问
    }
}

 

package com.ffyc.javaopp.day2.limitdemo1;
 
import com.ffyc.javaopp.day2.limitdemo1.Person;
 
public class TestPerson {
    public static void main(String[] args) {
        Person p = new Person();
        System.out.println(p.pubnum);
        System.out.println(p.pronum);
        System.out.println(p.defnum);
        //System.out.println(p.prinum);
    }
}

  • 29
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值