第五章作业

it2023-12-27  68

Java的访问控制修饰符有哪些?各有什么访问权限?请对照第7页的ppt表格分别写程序验证。

类的访问修饰符

类只能用== default==(什么也不写), public来修饰。 对与用 default修饰的类只能在同一包下进行访问

方法和域的访问修饰符

方法的访问修饰符有 private,== default==, protected和public。

private修饰的方法只能在本类中访问default只能在本包中访问。在同一包中的子类将继承该方法 //在com.resource中定义 package com.resource; public class Demo1 { public String chaPublic = "Public"; protected String chaProtected = "Protected"; private String chaPrivate = "Private"; } public class Demo2 { public static void main(String[] args){ Demo1 sv = new Demo1(); System.out.println(sv.chaPublic ); // 无报错 System.out.println(sv.chaProtected ); // 无报错 System.out.println(sv.chaPrivate); // The field SomeVar.varPrivate is not visible } } //------------------------------- package com.run; import com.resource.Demo1; public class RunDemo { public static void main(String[] args){ Demo1 sv = new Demo1(); System.out.println(sv.chaPublic ); // 无报错 System.out.println(sv.chaProtected ); // The field SomeVar.varProtected is not visible System.out.println(sv.chaPrivate); // The field SomeVar.varPrivate is not visible } }

子类对于从父类继承的哪些属性与方法是可见的?请分别写程序进行验证。

除了private以外的所以属性与方法都是可见的,即public,protect,friendly都是可见的。 举例如下

class Dad{ public String Pub = "Public"; protected String Pro = "Protected"; private String Pri = "Private"; } class Son extends Dad{ public void setName(String name_){ this.Pri = "new private"; // The field FatherPlane.namePri is not visible } } public class RunPlane{ public static void main(String args[]) { Son sp = new Son(); System.out.println(sp.Pub); // 无报错 System.out.println(sp.Pro); // 无报错 System.out.println(sp.Pri); // The field FatherPlane.namePri is not visible } }

什么是组合?有什么作用?请举例说明。

1.组合:是把一个旧类当成另一个类的组合成分(把旧类对象作为新类的成员变量)2.作用:实现类的复用 //端点 public class Point { private int x,y; public Point(int x,int y) { this.x = x; this.y = y; } public int GetX() { return x; } public int GetY() { return y; } } //线段 class Line { private Point p1,p2; //两端点 Line(Point a, Point b) { p1 = new Point(a.GetX(),a.GetY()); p2 = new Point(b.GetX(),b.GetY()); } }

什么是重载?有什么作用?请举例说明。

重载的含义及功能:在java中,如果有功能类似,可以使用相同的名字来定义不同功能或方法

举例 用方法重载实现一个简单的

package cn.itcast.day04.demo04; public class Demo01MethodOverload{ System.out.println(sum(10, 20));//30 System.out.println(sum(10, 20,30));//30 System.out.println(sum(10, 20,30,40));//30*/ ;//这里不管对的上哪一个同名方法的参数数量都可以 } public static int sum(int a,int b){ System.out.println("有2个参数的方法执行!"); return a+b; } public static int sum(int a,int b,int c){ System.out.println("有3个参数的方法执行!"); return a+b+c; } public static int sum(int a,int b,int c,int d){ System.out.println("有4个参数的方法执行!"); return a+b+c+d; }

什么是覆盖?有什么作用?请举例说明。

理解 如果在子类中定义一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法。 可以达到不更改父类的方法便创建了子类的一个方法。使程序更加的安全。

//父类 class Parent { public int getScore(){ return 3; } public String getCountryName(){ return “China”; } } //子类 class Son extends Parent { public int getScore(){ return 4; } } public class RunSon{ public static void main(String args[]){ Son s = new Son(); System.out.println(s.getScore()); System.out.println(s.getCountryName()); } }
最新回复(0)