java学习第18天

权限修饰符

Private:在同一类中可被访问

默认:在同一类中以及在同一包中子类无关类可被访问

Protected:在同一类中,在同一包中子类无关类,以及不同包的子类

Public:在同类中,同一包子类、无关类,不同包子类,不同包的无关类

示例:

package jicheng.com;

public class Fu {

        private void show1(){
            System.out.println("rensaihang1");
        }
        void show2(){
            System.out.println("rensaihang2");
        }
        public void show3(){
            System.out.println("rensaihang3");
        }
        protected void show4(){
            System.out.println("rensaihang4");
        }

    public static void main(String[] args) {
        Fu f1=new Fu();
        f1.show1();
        f1.show2();
        f1.show3();
        f1.show4();
    }
}

package jicheng.com;

public class Zi extends Fu {
    public static void main(String[] args) {
        //创建Zi的对象看哪些方法可被调用
       
Zi z1=new Zi();
            z1.show2();
            z1.show3();
            z1.show4();
    }
}
package jicheng.com;

public class Demo {
    public static void main(String[] args) {
        //创建Fu的对象看哪些方法可被调用
       
Fu f2=new Fu();
        f2.show4();
        f2.show3();
        f2.show2();
    }
}
package main.rensaihang;
import jicheng.com.Fu;
public class Zi extends Fu{
    public static void main(String[] args) {
        Zi z=new Zi();
        z.show3();
        z.show4();
    }
}
package main.rensaihang;


import jicheng.com.Fu;

public class Demo {
    public static void main(String[] args) {
        Fu f=new Fu();
        f.show3();

    }
}

 

状态修饰符:

状态修饰符可用来修饰成员方法、成员变量、类、局部变量。

Final修饰局部变量:

变量基本类型:final修饰的是基本类型的数据值不能发生改变。

变量引用类型:final修饰的是引用类型的地址值不能发生改变,但地址里的内容是可以发生改变的。

package jicheng.com;
public class fs{
    public int age=20;
}

 

package jicheng.com;

public class Final {
    public static void main(String[] args) {
        //final修饰基本变量
       
final int age=20;
        age=200;
        System.out.println(age);
        //final修饰引用变量
       
fs s=new fs();
        s.age=200;
        System.out.println(s.age);
    }

}

Error:(7, 9) java: 无法为最终变量age分配值

Final:修饰方法,方法不能被重写,修饰变量,表示变量是常量,不能被再次赋值,修饰类,表示类是最终类,不能被继承。

package jicheng.com;

import java.lang.reflect.Method;

public class Fu {
    public final void Method(){
        System.out.println("Fu Method");
    }

    public static void main(String[] args) {
        Fu f=new Fu();
        f.Method();


    }
}
package jicheng.com;

public class Zi extends Fu {
    public void Method(){
        System.out.println("Zi Method");
    }
    public static void main(String[] args) {
        //
       
Zi z=new Zi();
        z.Method();
    }
}
package jicheng.com;

public class Demo {
    public static void main(String[] args) {
        //创建Fu的对象看哪些方法可被调用
       
Zi z=new Zi();
        z.Method();
    }
}

Error:(4, 17) java: jicheng.com.Zi中的Method()无法覆盖jicheng.com.Fu中的Method()

  被覆盖的方法为final

Static:关键字是静态的意思,可以修饰成员方法,成员变量,修饰的内容,被类的所有对象共享(这也是判断是否使用静态关键字的条件),可以通过类名调用,当然也可以用对象名调用,推荐使用类名调用。

Static访问特点:静态成员方法只能访问静态成员。

多态概述:同一个对象在不同时刻表现出的不同形态。

举例:猫

猫是猫:猫 cat=new 猫();

猫是动物:动物 animal= new 猫();

这里猫在不同时刻表现出了不同的形态,就是多态。

多态的前提和体现

有继承和实现关系,有方法重写,有父类引用指向子类对象(动物 animal= new 猫();)。

多态中成员访问特点:

成员变量:编译看左边,执行看左边,成员方法:编译看左边,执行看右边。

成员方法有重写,成员变量没有。

多态的好处和弊端:好处,提高程序的扩展性,具体体现:定义方法的时候,使用父类型做参数,将来使用时,使用具体的子类型参与操作。弊端,不能使用子类的特有功能。

向上转型:父类引用指向子类对象(从子到父),向下转型:父类引用转为子类对象(从父到子)。利用向下转型可以解决多态弊端。8.2.

posted @ 2021-07-15 21:46  几人著眼到青衫  阅读(46)  评论(0)    收藏  举报