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.

浙公网安备 33010602011771号