1. Java的访问控制修饰符有哪些?各有什么访问权限?
①public(公共访问权限)
②protected(包访问权限、继承访问权限)
③无访问控制符修饰(包访问权限)
④private(类内部访问权限)
2. 子类对于从父类继承的哪些属性与方法是可见的?请分别写程序进行验证。
public和protected
①public
class FighterPlane1{ public int y=3; public void shuchu(){ System.out.println("洛熙熙"); } } class FighterPlane2 extends FighterPlane1{ } public class RunPlane{ public static void main(String args[]){ FighterPlane2 fpp=new FighterPlane2(); System.out.println("y的值为:"+fpp.y); fpp.shuchu(); } }
在这里子类继承了父类中的public属性的y和shuchu函数,结果为:
y的值为:3 洛熙熙
②protected
class FighterPlane1{ protected int y=3; protected void shuchu(){ System.out.println("洛熙熙"); } } class FighterPlane2 extends FighterPlane1{ } public class RunPlane{ public static void main(String args[]){ FighterPlane2 fpp=new FighterPlane2(); System.out.println("y的值为:"+fpp.y); fpp.shuchu(); } }
在这里子类继承了父类中的protected属性的y和shuchu函数,结果为:
y的值为:3 洛熙熙
③private
若将y和shuchu函数的属性改为private,则结果会出现:
java: y 在 FighterPlane1 中是 private 访问控制
说明子类对于从父类继承的private属性与方法是不可见的。
3. 什么是组合?有什么作用?请举例说明。
定义:组合(Composition)指的是一个类的属性含有一个另一个类的引用,可以体现整体与部分、拥有的关系。
作用:实现类的复用
//端点 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()); } }
4. 什么是重载?有什么作用?请构造各种重载示例。
定义:重载就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法。
作用:不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。
public class OverloadDemo { //1. test()方法第一次重载,没有参数 void test() { System.out.println("No parameters"); } //2. test()方法第二次重载,一个整型参数 void test(int a) { System.out.println("a: " + a); } //3. test()方法第三次重载,两个整型参数 void test(int a, int b) { System.out.println("a and b: " + a + " " + b); } //4. test()方法第四次重载,一个双精度型参数 double test(double a) { System.out.println("double a: " + a); return a * a;//返回a*a的值 } } public class Overload { public static void main(String args[]){ OverloadDemo ob=new OverloadDemo(); double result; ob.test(); //定义的是test()方法 ob.test(10); //定义的是test(int a)方法 ob.test(10,20); //定义的是test(int a,int b)方法 result=ob.test(123.23); //定义的是test(double a)方法 System.out.println("result of ob.test(123.23): "+result); //输出result的值 } }
运行结果为:
运行结果: No parameters a: 10 a and b: 10 20 double a: 123.23 result of ob.test(123.23): 15185.6329
5. 什么是覆写?有什么作用?覆写父类方法的条件有哪些?请举例说明。
定义:在子类之中有可能定义和父类完全相同的方法或属性的名称。
作用:对功能进行复用和扩充
条件:
①子类的访问修饰符权限应等于或大于父类,不能变小
②子类的返回类型能够向上转型成为父类的返回类型
③异常也要能向上转型为父类的异常
④方法名、参数类型及个数必须严格一致
⑤只能针对非静态、非final、非构造方法
class Person { public void fun() { System.out.println("好好学习。"); } } class Student extends Person{ //方法覆写 public void fun() { System.out.println("天天向上。"); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)