您的位置:首页 > 编程语言 > Java开发

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

2016-04-12 12:57 204 查看
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="吃";
@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
晚上我要敲代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: