美文网首页
JavaSE之修饰符,类和对象

JavaSE之修饰符,类和对象

作者: 金石_832e | 来源:发表于2019-03-07 18:21 被阅读0次

    public class MethodDemo1 {
        public MethodDemo1() {
            System.out.println(123);
        }
        public MethodDemo1(int i) {
            
        }
        public static void main(String[] args) {
            Random r = new Random();
        }
    }
    

    特殊的方法:构造器(构造方法)

    • 1.这个方法名字 -- 必须和类名完全一样
    • 2.没有返回值,连void也写
    • 3.不能用static修饰

    我们可以通过:类名称 对象名称 = new 构造方法 的方式创建一个对象。例如:Random r = new Random(); 其中关键字new就是表示创建了一个对象。

    Student st[] =new Student[5]; //创建一个Student数组。该数组的默认值是null。
    st[0]=new Student(); // 此时为数组中的第一个对象赋值。
    有的人一定想问,为什么st[0]为啥没有声明他的类型。因为上面已经声明(Student st[] )

    面试题:生成一副不带大小王的扑克牌

    public class Poker {
    String suit;// 花色
    String count;// 点数
    public void giveMe() {
        String hs[] = {"红桃","黑桃","方片","草花"};
        String ds[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        // 写一个循环,生成一副扑克
        Poker pokers[] = new Poker[52];
        int index = 0;
        // 遍历数组,取到hs[]和ds[]的所有组合,给Poker对象赋值,然后存入pokers[]
        for(int i = 0;i < hs.length;i++) {
            for(int j = 0;j < ds.length;j++) {
                pokers[index] = new Poker(); //对于小白来说,该处是重点
                pokers[index].suit = hs[i];
                pokers[index].count = ds[j];
                index++;
            }
        }
        for(Poker p : pokers) {
            System.out.println(p.suit+p.count);
        }
    }
    public static void main(String[] args) {
        Poker p = new Poker();
        p.giveMe();
    }
    }
    

    匿名对象

    public class Demo1 {    
    public void test1() {
        System.out.println(123);
    }
    public void test2() {
        System.out.println(456);
    }
    public static void main(String[] args) {
        // 匿名对象 : 没有引用指向的对象,它只能使用一次
    //      Demo1 d = new Demo1();
    //      d.test1();
    //      d.test2();
        new Demo1().test1();
        new Demo1().test2();
        
        // 垃圾自动回收机制(GC)
        // JVM会把堆中没有引用指向的对象视为垃圾对象,当这个对象执行完对应的工作,JVM虚拟机
        // 会自动找到这些垃圾对象调用其finalize()回收内存
    }
    }
    

    谈谈垃圾自动回收(gc):JVM会把那些堆内存中没有引用的对象视为垃圾对象,这些对象在执行完指定工作后,JVM会自动找到这些垃圾对象,调用其finalize()方法回收其内存。

    产生没有引用的对象:

    • new Demo1().test2();

    Java三大或四大特性

    Java面相对象特性:继承,封装,多态,抽象(四大)
    Java面相对象特性:继承,封装,多态(四大)
    抽象(程序员将现实实物抽象为脑中概念模型)
    封装 :将一套功能组织成一个方法,将一套方法加一套属性组织到一个类,将一套类组织到一个包中

    访问权限修饰符

    •  public : 公有,工程中可见
       能修饰类,方法,属性(全局变量)
        * protected : 受保护的,当前包可见,跨包子类可见。能修饰方法和属性。
        *      能修饰方法和属性
        * 【friendly,default】:默认的,跨包不可见
        *      能修饰类,方法,属性(全局变量)
        * private : 私有的,只有当前类可见
        *      能修饰方法和属性
        */
      

    JavaBean(实体类) :

    • 1.有无参构造器(必要)
    • 2.属性全部私有
    • 3.有公有的get(获取)和set(修改)方法

    static关键字

    • 能修饰方法和属性(全局变量,修饰的全局变量;类变量,静态变量)
    • 不能修饰类,构造方法,局部变量。
    • static修饰的方法和属性,可以通过类名直接调用
    • 静态方法只能直接访问static方法和属性,不能直接调用非静态方法和属性。
    • 静态成员归这个类的所有对象共享。

    单例模式

    //饿汉模式

     class Singleton {
    private  Singleton(){}
    private  static  Singleton  s  = new  Singleton();
    public  static  Singleton  getSingleton(){
    return s;
        }
    } 
    

    //懒汉模式

    class Singleton {
    private  Singleton(){}
    private  static  Singleton  s  ;
    public  static  Singleton  getSingleton(){
    if(s ==null){
    s= new  Singleton();
    }
    return s;
    }
    } 
    

    Java中是单继承模式:一个父类可以有多个子类,但是一个子类只能有一个父类。
    继承:public class A extends B{}
    A类称为子类,B类称为父类。A类具有B类拥有的属性和方法,除了构造方法、私有属性和私有方法。
    子类可以添加自由独有的属性和方法来拓展功能。
    继承带来的优点:
    是一种代码重用的重要手段,也是实现“开闭原则”的基础,同时子类还可以添加自己独有的属性和方法,来拓展父类功能开闭原则,对拓展开放,对修改关闭。

    相关文章

      网友评论

          本文标题:JavaSE之修饰符,类和对象

          本文链接:https://www.haomeiwen.com/subject/ywshpqtx.html