zoukankan      html  css  js  c++  java
  • JAVA核心技术I---JAVA基础知识(查漏补缺private,static)

    一:private对于类和对象(同C++)

    private是只有这个类内部可以访问(类的成员函数和定义初始化)
    private是类之间的限制,而不是对对象的限制《重点》
    同类对象是可以直接访问对象的私有成员
    class priTest{
        private int age;
        
        public void setAge(int a) {
            this.age=a;
        }
        
        public int getAge() {
            return this.age;
        }
        
        public int compare(priTest obj1) {
            int flag=0;
            if(this.age>obj1.age) {
                flag=1;
            }
            return flag;
        }
    }
    
    
    public class PrivateTest {
        public static void main(String[] args) {
            priTest p1= new priTest();
            priTest p2= new priTest();
            
            p1.setAge(15);
            p2.setAge(16);
            
            int ret=p1.compare(p2);
            
            System.out.println(ret);
        }
    }

    二:子类对于父类private成员变量的访问

    虽然子类无法继承父类的private变量,但是其父类private成员变量和方法依然存在,可以通过父类的公共方法(未重写)去访问到那些字段和方法
    class priTest{
        private int age;
        
        public void setAge(int a) {
            this.age=a;
        }
        
        public int getAge() {
            return this.age;
        }
        
        public int compare(priTest obj1) {
            int flag=0;
            if(this.age>obj1.age) {
                flag=1;
            }
            return flag;
        }
    }
    
    class priSonTest extends priTest{
        public void test() {
            System.out.println("nothings");
        }
    }
    public class PrivateTest {
        public static void main(String[] args) {
            priSonTest p2= new priSonTest();
            p2.setAge(16);
            System.out.println(p2.getAge());    
       }
    }

    二是可以满足一的

    三:static类静态变量的访问

    C++中static只能通过 类名.静态成员变量 进行访问
    但是java中除此之外还有其他访问形式:
    1.同C++
    2.通过对象可以访问public static成员变量
    3.可以通过静态成员函数访问
    4.可以通过普通成员函数访问
    注意:不允许通过静态成员函数去访问非静态成员变量或者方法
    class Parent{
        public int a;
        
        public void start() {
            System.out.println("paretn");
        }
    }
    
    class Child extends Parent{
        public static int b=3;
        
        public void start() {
            System.out.println("child");
            System.out.println(a);
            a+=3;
            b+=6;  //方法四访问
        }
        
        public static void change(int c) {
            b+=c;  //方法三访问
        }
    }
    
    
    public class MaintTest {
    
        public static void main(String[] args) {
            Child c = new Child();
            c.start();
            
            c.change(5);
            System.out.println(Child.b);  //方法一访问
            System.out.println(c.b);  //方法二访问
            
            Child.change(3);
            System.out.println(Child.b);
            System.out.println(c.b);
            
        }
    
    }
    child
    0
    14
    14
    17
    17
  • 相关阅读:
    Flink 源码解析 —— 深度解析 Flink 序列化机制
    Flink Metrics 源码解析
    Flink 源码解析 —— JobManager 处理 SubmitJob 的过程
    vue封装插件并发布到npm上
    vue+ivew-admin开发项目,内存占用过大解决办法
    Vue-cli 2.9 多页配置及多页面之间的跳转问题
    vuex2.0 基本使用(3) --- getter
    vuex2.0 基本使用(2) --- mutation 和 action
    vuex2.0 基本使用(1) --- state
    如何新建仓并 上传本地新的项目
  • 原文地址:https://www.cnblogs.com/ssyfj/p/10223646.html
Copyright © 2011-2022 走看看