Java中可用的类修饰符有:public(公有) ,abstract'(抽象) ,final(不可改变),缺省。其中用public修饰类时,表示不管是否是该类所在的包都可访问该类;缺省则表示:只能在包含该类的包中使用该类。abstract表示该类是一个抽象类,只要类中有一个抽象方法,类都必须声明为抽象类。抽象类不可以实例化。final修饰类表示该类不可以被继承。

      Java中成员变量和方法的访问权限修饰符有:public ,protected,缺省,private。

其中:

所有类中都可访问。

同一包中的所有类,以及不同包的该类的子类可以访问。

同一包中的所有类可以访问。

本类中可以被访问。

其他:

    static:修饰变量,称为类变量或静态变量。静态变量是和类存在一起的,每个实例共享这个静态变量,在类加载时初始化。
    final:被声明为final的变量必须在声明时给定初值,且在以后的引用中只能读取不能更改。修饰方法时,该方法不能被当前子类的方法覆盖。

此外:

     访问权限修饰符以及static是不能用来修饰局部变量的,但final可以。

向上转型:

     把子类赋值给超类对象时,通过该对象调用方法只能调用父类中含有的方法,属性也是父类中的属性。子类如果覆盖了父类的方法,则执行的是子类中实现的方法,子类若没有覆盖,则执行的是父类中的方法。

    好处:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。

package com.online.test3;

public class Parent {

	int age=50;
	String sex="男";
	
	public void say(){
		
		System.out.println("I am your father");
				
	}
	
	
}
package com.online.test3;

public interface Mom {
	
	
	static int a=0;
	int b=1;//默认为静态
	

	public void work();
	

}



package com.online.test3;

public class Daughter extends Parent implements Mom{

	String interest="吃";
	@Override
	public void work() {
		// TODO Auto-generated method stub
		System.out.println("work"+"先做饭"+a+" "+b+" "+super.age);
	}
		
    public void study(){
    
    	System.out.println("晚上我要敲代码");
    }
    public void say(){
		
        System.out.println("I am your daughter");
				
	}	
		
	/**
	 * 子类转换赋值给父类对象。通过该对象调用方法只能调用父类中含有的方法,属性也是父类中的属性。
	 * 
	 * 子类如果覆盖了父类的方法,则执行的是子类中实现的方法,子类若没有覆盖,则执行的是父类中的方法
	 * @param args
	 */
	public static void main(String[] args){
		
		
		Mom m=new Daughter(); //把子类转成接口
		m.work();//执行的是子类中的该方法
		//m.say();/这是错误的,无法调用
		//m.study();//这是错误的,无法调用
		//m.interest//这是错误的,无法调用
		
		Parent p=new Daughter();//把Daughter类转换成Parent,只能调用parent中含有的方法
		p.say();//执行的是子类中的该方法
		int age=p.age;
		String sex1=p.sex;
		//p.work();这是错误的,无法调用
		//p.study();这是错误的,无法调用
		
		Daughter d=new Daughter();//可以调用子类和从父类继承到的方法
		int dage=d.age;
		String in=d.interest;
		int a1=a;
		d.say();
		d.work();
		d.study();
		
	}		
}

执行结果:

work先做饭0 1 50
I am your daughter
I am your daughter
work先做饭0 1 50
晚上我要敲代码