黑马程序员_阶段练习&访问修饰符

来源:互联网 发布:淘宝店铺经营范围 编辑:程序博客网 时间:2024/06/05 05:40

----------- android培训java培训期待与您交流!------------

一、包

public protected default private
一个类中 ok ok ok ok
同一个包中 ok ok ok
子类 ok ok
不同包中 ok


包与包之间类的访问,只有两种权限可用,一个是public,
一个是protected,注意:该权限只给不同包的子类提供使用。

二、练习

1、

class Day06{static int i=2;//随着类的加载而加载。加载到方法区中的静态区中。int j=9;//定义了一个属性,也就是一个成员变量,也叫实例变量。当对象存在时,该变量存在于堆内存的对象中。static{//静态代码块。随着类的加载而执行。   System.out.println("静态代码块...i="+i);}Day06(int a){//带一个int参数的构造函数。this();//调用了本类中空参数的构造函数。   System.out.println("有参的构造函数...i="+i+",j="+j);}{ //构造代码块,定义在类中的代码块,用于给所有对象进行初始化动作的代码块。  //构造函数是要对与之对应的对象初始化   System.out.println("构造代码块...i="+i+",j="+j);}static void show(){//静态函数。函数中没有访问非静态的成员。    System.out.println("静态show方法...i="+i);}Day06(){// 空参数的构造函数。    System.out.println("无参的构造函数..."+",j="+j);}}class Test{public static void main(String[] args){Day06 d = new Day06(1);//通过Day06.class类文件创建了对象。}}

2、

 class Base{private int i = 2; Base(){System.out.println("base:"+this.i);  //this.display();}public void display(){System.out.println("base display:"+this.i); // }} class Derived extends Base { public int i = 22; publicDerived(){super();i = 222;        // } public void display(){System.out.println("derived display:"+i); } } class TestI {public static void main(String[] args){new Derived();} }

3、测试

1.写出程序结果class Demo{public static void func()throws Exception{try{throw  new Exception();}finally{System.out.println("B");}}public static void main(String[] args){try{func();System.out.println("A");}catch(Exception e){System.out.println("C");}System.out.println("D");}}编译失败,函数内有抛出编译时被检测异常对象,并没有被catch处理,必须要在函数上声明。 ====================================================================2. 写出程序结果class Test{Test(){//super();System.out.println("Test");}}class Demo extends Test{Demo(){//super();System.out.println("Demo");}public static void main(String[] args){new Demo(); new Test(); }}TestDemoTest====================================================================3. 写出程序结果interface A{}  class B implements A{public String func(){return "func";}}class Demo{public static void main(String[] args){A a=new B();//接口的引用指向了自己的子类对象。System.out.println(a.func());//编译失败,多态调用方法时,编译看左边。}}====================================================================4. 写出程序结果class Fu{boolean show(char a){System.out.println(a);return true;}}class Demo extends Fu{public static void main(String[] args){int i=0;Fu f=new Demo();Demo d=new Demo();for(f.show('A'); f.show('B')&&(i<2);f.show('C')){i++;d.show('D');}}boolean show(char a){System.out.println(a);return false;}}AB====================================================================5. 写出程序结果interface A{}class B implements A{public String test(){return "yes";}}class Demo{static A get(){return new B();}public static void main(String[] args){A a=get();//A a = new B();System.out.println(a.test());//编译失败了,因为A接口中没有定义过test,编译看左边。}}====================================================================6. 写出程序结果:   class Super{int i=0;public Super(String a){System.out.println("A");i=1;}public Super(){System.out.println("B");i+=2;}}class Demo extends Super{public Demo(String a){//super();System.out.println("C");i+=5;}public static void main(String[] args){int i=4;Super d=new Demo("A");System.out.println(d.i);}}BC7====================================================================7. 写出程序结果class TD{int y=6;class Inner{static int y=3;//如果内部类中定义了 静态的成员,该内部类必须被static修饰。  void show(){System.out.println(y);}}}class TC{public static void main(String[] args){TD.Inner ti=new TD().new Inner();//直接创建一个内部类对象。ti.show();}}编译失败。====================================================================8. 写出程序结果:  class Fu{int num=4;void show(){System.out.println("showFu");}}class Zi extends Fu{int num=5;void show(){System.out.println("showZi");}}class T{public static void main(String[] args){Fu f=new Zi();Zi z=new Zi();System.out.println(f.num); //4System.out.println(z.num); //5f.show(); //showZiz.show(); //showZi}}====================================================================9. 写出程序结果class Demo{public static void main(String[] args){try{showExce(); System.out.println("A");}catch(Exception e){System.out.println("B");}finally{System.out.println("C");}System.out.println("D");}public static void showExce()throws Exception{throw new Exception();}}BCD====================================================================10. 写出程序结果class Super{int i=0;public Super(String s){i=1;}}class Demo extends Super{public Demo(String s){//super();i=2;}public static void main(String[] args){Demo d=new Demo("yes");System.out.println(d.i);}}编译失败,因为父类中没有空参数的构造函数。或者子类构造函数中没有通过super指定访问父类中的构造函数。====================================================================11. 写出程序结果class Super{public int get(){return 4;}}class Demo15 extends Super{public long get(){return 5;}public static void main(String[] args){Super s=new Demo15();System.out.println(s.get());}}编译失败,因为子父类中出现了调用不确定性的方法。====================================================================12. 写出程序结果:class Demo{public static void func(){try{throw  new Exception();//System.out.println("A");//无法访问的语句。}catch(Exception e){System.out.println("B");}}public static void main(String[] args){try{func();}catch(Exception e){System.out.println("C");}System.out.println("D");}}编译失败。====================================================================13. 写出程序结果class Exc0 extends Exception{}class Exc1 extends Exc0{}class Demo{public static void main(String[] args){try{throw new Exc1();}catch(Exception e){System.out.println("Exception");}catch(Exc0 e){System.out.println("Exc0");}}}编译失败,因为catch(Exception)应该往下放。====================================================================14. 写出程序结果class Test{ public static String output=""; public static void foo(int i){ try{ if(i==1)throw new Exception(); output+="1"; } catch(Exception e){ output+="2"; return; } finally{ output+="3"; } output+="4"; }public static void main(String args[]){ foo(0);System.out.println(output);//134foo(1); System.out.println(output); //13423}} ====================================================================15. 写出程序结果public class Demo{     private static int j = 0; private static boolean methodB(int k){j += k; return true; }public static void methodA(int  i){         boolean b;   b = i < 10 | methodB (4); b = i < 10 || methodB (8); }public static void main (String args[] ){methodA (0); System.out.println(j); //4} }====================================================================16. 选择题,写出错误答案错误的原因,用单行注释的方式。class Demo{ int show(int a,int b){return 0;}}下面那些函数可以存在于Demo的子类中。A.public int show(int a,int b){return 0;}//覆盖,因为权限够大。B.private int show(int a,int b){return 0;}//错误,因为权限不够。C.private int show(int a,long b){return 0;}//可以,子类的特有方法。D.public short show(int a,int b){return 0;}//不可以,调用的不确定性。E.static int show(int a,int b){return 0;}//不可以,静态只能覆盖静态。====================================================================17. 选择题。写出错误答案错误的原因,用单行注释的方式。class Demo{public void func(){//位置1;new Inner();}class Inner{}public static void main(String[] args){Demo d=new Demo();// 位置2 }}A.在位置1写 new Inner();//可以的。B.在位置2写 new Inner();//不可以。因为main方法是静态的,Inner要被访问必须也是静态的。C.在位置2写 new d.Inner();//错误的,格式错了。D.在位置2写 new Demo.Inner();//错误的,因为Inner不是静态的。 E.在位置2写 new Demo().new Inner();//可以的。====================================================================18. 代码补足题interface Inter{void show(int a,int b);void func();}class Demo{public static void main(String[] args){//补足代码;调用两个函数,要求用匿名内部类Inter in = new Inter(){public void show(int a,int b){}public void func(){}};in.show(3,4);in.func();}}====================================================================19. interface A{void show();}interface B{void add(int a,int b);}class C implements A,B{private int a,b;//private int sum;//补足程序代码public void add(int a,int b){this.a = a;this.b = b;//this.sum = a+b;}public void show(){System.out.println(a+b); //System.out.println(sum); }}class D{public static void main(String[] args){C c=new C();c.add(4,2);c.show();//通过该函数打印以上两个数的和。}}====================================================================20. interface Test{void func();}class Demo{public static void main(String[] args){//通过主函数调用show,补足代码;通过(匿名内部类)进行show方法参数传递。new Demo().show(new Test(){public void func(){}});}void show(Test t){t.func();}}====================================================================21. 补足compare函数内的代码,不许添加其他函数。class Circle{private static double pi=3.14;private double radius;public Circle(double r){radius=r;}public static double compare(Circle[] cir){//补足程序代码double max = cir[0].radius;for(int x=1; x<cir.length;x++){if(cir[x].radius>max)max = cir[x].radius;}return max;}}class TC{public static void main(String[] args){Circle cir[]=new Circle[3];cir[0]=new Circle(1.0);cir[1]=new Circle(2.0);cir[2]=new Circle(4.0);System.out.println("最大的半径值是:"+Circle.compare(cir));}}====================================================================22. 补足compare函数内的代码,不许添加其他函数。class Circle{private double radius;public Circle(double r){radius=r;}public Circle compare(Circle cir){//补足程序代码/*if(this.radius>cir.radius)return this;return cir;*/return this.radius>cir.radius?this:cir;}}class TC{public static void main(String[] args){Circle cir1=new Circle(4.0);Circle cir2=new Circle(2.0);Circle cir;cir=cir1.compare(cir2);if(cir1==cir)System.out.println("cir 1的半径比较大");elseSystem.out.println("cir 2的半径比较大");}}

0 0