Java面向对象(下)部分问题

1.this和super各有几种用法?

(1)this的用法共有三种

  • 表示当前对象引用,常用于形参或局部变量与类的成员变量同名的情形,使用this成员名表示当前对象的成员。
public class FighterPlane1{
    String name = "su35";
    int missileNum;
    void init(String name){
        this.name = name;
        System.out.println(this.name);
    }
    public static void main(String[] arg){
        FighterPlane1 fp = new FighterPlane1();
        fp.init("f35");
    }
}
  • 表示当前对象
    在这里插入图片描述

  • 调用当前类的构造方法
    在这里插入图片描述
    (2)super的用法有两种

  • super.域变量、super.成员方法(参数)

  • super(参数)

2.子类对象实例化的具体过程是什么?

(1)为对象分配内存空间,对成员变量进行默认的初始化
(2)绑定构造方法,将new中的参数传递给构造方法的形式参数
(3)调用this或super语句(二者必居其一,不能同时存在)
(4)进行实例变量的显示初始化操作
(5)执行当前构造方法的方法体中的程序代码

3.类的域变量和方法中定义的局部变量在初始化上有何区别?

类的域变量在类初始化时就开始创建了,而方法中的局部变量是在调用到该方法时,才会为该变量创建。

4.模仿形成抽象类的过程,自选角度,形成一个自己的抽象类,并在程序的类继承和引用中体现抽象类的作用?
import java.awt.*;
import java.applet.*;
abstract class Volume{
    protected int x,y,z;
    protected double r;
    public Volume(int x,int y,int z,double r){
        this.x=x;
        this.y=y;
        this.z=z;
        this.r=r;
    }
    abstract public double getArea();
    abstract public double getVolume();
}
//定义各子类
class Lifangti extends Volume{
    public double getArea(){
        return(x*y);
    }
    public double getVolume(){
        return(x*y*z);
    }
    public Lifangti(int x,int y,int z){
        super(x,y,z,z);
    }
}
class Yuanzhuti extends Volume{
    public double getArea(){
        return(r*r*Math.PI);
    }
    public double getVolume(){
        return(r*r*Math.PI*z);
    }
    public Yuanzhuti(int z,double r){
        super(r,r,z,r);
    }
}
public class RunVolume extends Applet{
    Lifangti lf = new Lifangti(3,4,5);
    Yuanzhuti yz = new Yuanzhuti(5,2.3);
    public void paint(Graphics g){
        g.drawString("Lifangti's area:"+lf.getArea(),50,35);
        g.drawString("Yuanzhuti's area:"+yz.getArea(),50,35);
        g.drawString("Lifangti's Volume:"+lf.getVolume(),50,55);
        g.drawString("Yuanzhuti's Volume:"+yz.getVolume(),50,55);
    }
}
5.接口有什么用?自己定义一个接口,并给出实现类和使用类。

接口的设计用途:通用可扩展代码,多态体现。

//定义接口
public interface School{
    public static final int OPEN = 1;
    public static final int CLOSE = 0;
    abstract void shangke();
    abstract void xiake();
    abstract void fangjia();
    abstract void exam();
}
//实现接口
class OurSchool implements School{
    public void shangke(){
        System.out.println("8;00 shangke");
    }
    public void xiake(){
        System.out.println("11;40 xiake");
    }
    public void exam(){
        System.out.println("18;00 exam");
    }
    public void fangjia(){
        System.out.println("10.1 fangjia");
    }
}
//使用接口
public class MySchool{
    public static void main(String args[]){
        School s = new OurSchool();
        s.shangke();
        s.xiake();
        s.exam();
        s.fangjia();
    }
}
6.抽象类与接口的异同点是什么?

在这里插入图片描述

7.引用比较方法有哪些?
  • equals方法:equals方法是Object类的方法,比较本引用和参数指明的某个引用是否相等,即是否指向同一对象。返回true或false。
  • 使用“=”比较
  • instanceof:二元运算符。
8.内部类的作用是什么?什么情况下使用匿名内部类?

(1)内部类就是在某个类的内部又定义了一个类。
(2)在类中需要实例化这个类的地方,通常为方法内,定义一个没有名称的类,即匿名内部类。

10.什么是数据隐藏?如何证明子类对父类同名方法进行重新定义,只能是方法的覆盖,而不是方法的隐藏?

数据隐藏是:只提供public方法来访问类中的私有属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值