java踩坑

public class kk {
    public static void main(String[] args) {
        K k=new K();
        k.ooo();
    }
}
import java.util.Observable;

public class K extends Observable {
public void init(){
    this.setChanged();
}
    public static void main(String[] args) {
        Observable observable=new Observable();
        observable.addObserver(new Oberver());
        observable.hasChanged();
        K k=new K();
        k.ooo();
    }
    protected   void ooo(){
        System.out.println("naosndoandoa");
    }


 
}

同一包下可以随意调用其他类protected的方法,不同包下只能随意调用public方法

静态方法不能用this

public class k {
    protected void   ss(){
        System.out.println("sss");
    }
}
import com.example.demo.k;

public class dadad extends k {

    public void  say(){
        this.ss();
    }

    public static void main(String[] args) {
        k k=new k();
        dadad  dadad=new dadad();
        dadad.say();
        //k中却没有ss()方法
    }
}

子类通过this调用父类方法,也可以通过super直接继承

import java.util.Observable;

public class Obervable extends Observable {

    public void   change(){
        this.setChanged();
        this.notifyObservers();
    }
    public static void main(String[] args) {
        Observable observable=new Observable();
        observable.addObserver(new Oberver());

        Obervable obervable=new Obervable();
        obervable.addObserver(new Oberver());
        System.out.println(observable.countObservers());

        obervable.change();

    }


}
import java.util.Observable;
import java.util.Observer;

public class Oberver   implements Observer {
    @Override
    public void update(Observable o, Object arg) {
        System.out.println(o.hasChanged());
        System.out.println("update");
    }


}

类的实例化对象不能直接调用protected方法


对象的组成部分包括:对象名,状态(属性),行为(操作)。类是对对象共有属性和行为的抽象,因此一个类定义的对象共享行为和属性。

类中不能直接实例化对象,要在方法中实例化

posted @ 2021-10-23 20:36  老运维  阅读(33)  评论(0)    收藏  举报