Java知识点总结二---类和成员修饰符

来源:互联网 发布:php时区设置 编辑:程序博客网 时间:2024/06/11 01:15

 

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

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

其中:

     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="吃";@Overridepublic void work() {// TODO Auto-generated method stubSystem.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 50I am your daughterI am your daughterwork先做饭0 1 50晚上我要敲代码




0 0