四、面向对象(中)

1.Java的访问控制修饰符有哪些?各有什么访问权限?请对照第7页ppt的表格分别写程序验证。
有3种访问修饰符:public、private、protected。
在这里插入图片描述

2.子类对于从父类继承的哪些属性与方法是可见的?请分别写程序进行验证。
子类继承了父类的所有属性和方法,但只有public、protected的属性和方法在子类是可见的。

class Plane{
protected String name;
public void setName( String _name){
name = _name;
}
public String getName(){
return name;
}
}
class FighterPlane extends Plane{
private int missileNum;
public void setNum( int _missileNum){
missileNum = _missileNum;
}
public void fire( ){
missileNum -= 1;
}
}
class Run{
public static void main( String[ ] args){
FighterPlane p = new FighterPlane( ) ;
p.name = “su35”;
p.setName( “f35”);
system. out.println(p.getName( ));
p.fire();
}
}
子类可以直接访问父类的protected属性和方法

class Plane{
private String name;
public void setName( String _name){
name = _name;
}
public String getName(){
return name;
}
}
class FighterPlane extends Plane{
private int missileNum;
public void setNum( int _missileNum){
missileNum = _missileNum;
}
public void fire( ){
missileNum -= 1;
}
}
class Run{
public static void main( String[ ]args){
FighterPlane p = new FighterPlane();
// p.name = “su35” ;
p.setName( “f35”);
system.out.println(p.getName( ));
p.fire() ;
}
}
子类不能直接访问父类的private属性和方法,可以调用父类的公共方法来间接访问私有属性
3.什么是组合?有什么作用?请举例说明。
组合即把一个类当成另一个类的组合成分,从而允许新类直接复用该类的public方法。
不破坏封装,整体类与局部类之间松耦合,彼此相对独立且具有更好的可扩展性。
class A{

}
class B{
A a //有A对象的引|用,可以看作与A对象的组合

}

4.什么是重载?有什么作用?请举例说明。
重载:方法名称相同,参数类型或个数不同
注意:若方法名称相同,参数相同,返回类型不同,则编译不能通过

class Parent{
public int getScore(){
return 3;
}
public int getScore(int i){
return i;
}
}
类Parent中有两个getScore方法,它们的参数有所不同

public Audioclip getAudioclip(URL ur1) {
.… ;
}
public Audioclip getAudioclip(URL ur1,string name){
try {
//通过重新构造一个新的URL对象,之后调用上面的同名方法来实现功能。
return getAudioClip(new URL(ur1, name));
} catch (MalformedURLException e) {
return null;
}
}

public boolean addA11(collection c) {
return addA11(size, c);
//size是链表长度,此方法调用下面的方法,将传入对象插入到指定链表尾部
}
//index是链表的当前索引号
public boolean addA11(int index,collection c) {

}

5.什么是覆盖?有什么作用?请举例说明。
子类对父类的同名方法(方法名称相同,参数相同,返回类型相同)重新进行定义,即在子类中定义与父类中已定义的同名而内容不同的方法。

class Parent {
public int getScore()
{ return 3; }
public String getCountryName()
{ return “China”; }
}
class Son extends Parent i
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( ));
}
}
输出结果:
4
China

class Super {
public Integer getLength() {
return new Integer(4); }
}
public class Sub extends Super {
public Long GetLength() {
return new Long(5); }
public static void main(String[] args) {
Super sooper = new Super();
Sub sub = new Sub();
System.out.println( sooper.getLength().toString() + “,”
+ sub.getLength().toString() );
}
}
输出结果:
4,4

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页