栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-20面向对象(中)作业1-9

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-20面向对象(中)作业1-9

1.面向对象的主要特征是什么?
封装,继承,多态

2.封装是如何实现的?
封装通过访问控制实现
访问权限控制符:
public (公共访问权限)
protected (包访问权限,继承访问权限)
无访问控制权限(包访问权限)
private(类内部访问权限)

3.对象之间如何相互作用?作用的条件是什么?
通过发送消息相互作用
条件:
1,引用必须引用了特定的对象,否则会在运行时发出NullPointerException异常
2,对象必须定义了相应的属性和方法,否则编译不会通过
3,被访问的属性和方法必须具有可访问的权限。

4,protected修饰符有何特点?
当类前修饰符为 public时,protected修饰的方法和属性可以被包中的类及其子类访问,当类前无修饰符的时候,protected修饰的方法和属性只能被包中的类访问

5.Object类都有哪些方法?
Object clone()
boolean equals(Object obj)
void finalize()
Class getClass()
int hashCode()
String toString()
void notify()
void wait()

6.重载的方法之间一般有什么联系?
重载:方法名称相同,参数类型或个数不同
方法标签:方法名称+参数类型+参数个数 组成唯一键
注意:返回类型,方法修饰符不同不能视为重载

7.子类覆盖父类方法需要什么条件,子类中定义父类同名的方法一定是覆盖吗?
1.子类的访问修饰符权限应大于等于父类,不能变小,父类private方法子类不能访问,更谈不上覆写了。
2.子类的返回类型能够向上转型成为父类的返回类型,也就是返回类型是父类返回类型的子类。
3.异常也要能向上转型为父类的异常。
4.方法名,参数类型及个数必须一致
注意:覆写只能针对非静态,非final,非构造方法。在JDK中很多父类的方法被子类重新覆盖,赋予了不同的含义,如Object类中的boolean
equals(Object obj)方法。

8.封装继承与多态在面向对象程序设计的用途是什么?
封装使得内部实现对用户隐藏,有利于安全操作;继承可以实现对象之间的共性与特性;多态性更贴近人的使用习惯,使程序更方便。

9.设计Src和Dis两个类,Src中有一个被封装的属性,类型为int(要求为非负值),每当通过特定方法更改Src对象中的这个属性后,Dis对象都能得到通知,并向Src发消息获得此属性值。

package test.my_project;
class Src{
	public int value;
	public Src(){};
	public void changevalue(int val,Dis d){
		if(val<0){
			System.out.println("ERROR!");
		}
		else{
			this.value=val;
			d.invoke();
		}
	}
}
class Dis{
	public Src s;
	public Dis(Src s){
		this.s=s;
	}
	public void invoke(){
		System.out.println(s.value);
	}	
}
public class Test {
	public static void main(String[] args) {
		Src src=new Src();
		Dis dis=new Dis(src);
		src.changevalue(5,dis);
	}
}
单例模式
```java
package test.my_project;
class FightPlane{
	private String name;
	private int misssileNum;
	private static FightPlane fp;
	private  FightPlane(String name,int misssileNum){
		this.name=name;
		this.misssileNum=misssileNum;
	}
	public static FightPlane getInstance(String name,int misssileNum){
		if(fp==null){
			fp=new FightPlane(name, misssileNum);
		}
		return fp;
	}
	public void getName(){
		System.out.println(name);
	}
	public void getMissileNum(){
		System.out.println(misssileNum);
	}
}
public class Test {
	public static void main(String[] args) {
		FightPlane fp;
		fp=FightPlane.getInstance("u35",34);
		FightPlane fp1;
		fp1=FightPlane.getInstance("w12",12);
		fp.getName();//u35
		fp1.getName();//u35
		fp.getMissileNum();//34
		fp1.getMissileNum();//34
		System.out.println(fp==fp1);//true;
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/309784.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号