面向对象2

面向对象2

1static关键字

/**
 * static关键字:static修饰类的属性\方法\代码块\内部类
 * 跟类一起加载,只有一份,存在方法区里
 * 静态属性两种调用:1
 */
public class Chinese {
    //属性
    String name;
    int age;
    /*String country;不用static修饰的话,每创建一个对象,都会复制一份在堆空间,浪费内存空间*/
    static String country = "中国";
}

public class TestChinese {
    public static void main(String[] args) {

        Chinese c1 = new Chinese();
        c1.name = "张三";
        c1.age = 18;


        Chinese c2 = new Chinese();
        c2.name = "李四";
        c2.age = 20;

        System.out.println(c1.country);
        System.out.println(Chinese.country);
    }
}

2static方法

/**
 * static修饰的静态方法:不能访问非静态成员变量
 *            成员方法:可以访问非静态成员变量 也可以访问静态成员变量
 *
 */
public class StaticMethod {

    int num1;//成员变量
    static int num2;//静态成员变量

    //成员方法
    public void get1(){
        System.out.println("成员方法 "+num1);
        System.out.println("静态方法 "+num2);
    }

    //静态方法
    public static void get2(){
        System.out.println("静态方法 "+num2);
    }

    public static void main(String[] args) {
        StaticMethod.get2();//通过类名访问静态方法
        StaticMethod s = new StaticMethod();//通过对象名访问成员方法.要先创建对象
        s.get1();
    }
}

3代码块

/**
 * 代码块 : 在类中定义,类似一个没有名称的方法
 * 分为:实例块  静态块
 * 实例块:在创建对象时自动调用
 * 静态块:在类加载时自动调用
 */
public class Demo {

    static int num = 10;

    //实例块
    {
        System.out.println("实例块");
    }
    //静态块
    static{
        System.out.println("静态块");
    }

    public static void main(String[] args) {
        //创建一个对象时,类加载了,所以两个块都会被调用
        /*new Demo();*/

        //通过类名访问一个静态属性时类加载了,所以静态块自动调用
        System.out.println(Demo.num);
    }
}

4包

/**
 * 包:
 * 概念:物理上的文件夹
 * 作用:管理类; 具体体现: 1 避免类重名(全类名=包名(类地址)+类名)
 *                     2
 *                     3
 */
public class PackageDemo {
    //默认使用了上面import导入的类
    Date d1 = new Date();
    //d2类型与d1类型是同名类,d1类型默认使用了import导入的类;d2类型只能全包名类
    java.sql.Date d2 = new java.sql.Date(100);
}

/**
 * 访问权限修饰符
 * public          公共权限
 * protected       受保护的
 * 默认             同包权限
 * private         私有权限
 */
public class PackageDemo2 {
    public int numpub;
    protected int numpro;
    int numint;
    private int numpri;

    public void test(){
        //同类权限 public protected 默认 private
        System.out.println(numpub);
        System.out.println(numpro);
        System.out.println(numint);
        System.out.println(numpri);
    }
}

public class PackageDemo3 {
    public void test(){
        PackageDemo2 p = new PackageDemo2();
        //同包权限 public protected 默认
        System.out.println(p.numpub);
        System.out.println(p.numpro);
        System.out.println(p.numint);

        //numpri被private修饰,只能在同类中被访问
        /*System.out.println(p.numpri);*/
    }
}

public class PackageDemo4 extends PackageDemo2 {

    public void test(){
        PackageDemo2 p = new PackageDemo2();
        PackageDemo4 p1 = new PackageDemo4();//创建本类对象  跨包访问

        //不同包的子类权限 public protected
        System.out.println(p.numpub);
        System.out.println(p1.numpro);

        //numpri被private修饰,只能在同类中被访问
        /*System.out.println(p.numpri);*/
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值