解决方案 »
- JAVA中inputstream类 read()函数问题,一个流结束的标志是?
- 新人求解,关于String类的问题
- 求助java连接oracle问题
- 一个神奇的现象,我左边JTree,右边JTable,都加了JScrollPane,用JSplitPane分左右,JTable读数据库,但是必须先移动一下JTree和JTable分解的那条东西
- 构造函数 前 的protected 有什么用?
- 关于Thread类,为什么Thread没有实例化就可以执行Thread.sleep(10000);
- ★★★升级为两颗星,散分,呵呵★★★
- 问一个语法上的问题?
- 用什么东西打开.rar文件?
- c3p0---MYSQL驱动
- JAVA SWING 布局实在搞不来
- Java中的 C-heap是什么意思?
public abstract void 修电脑方法_U盘();
public abstract void 修电脑方法_光盘();
public abstract void 修电脑方法_ghost镜像();
}
这个不像类的封装,这个像工厂一样,提供修电脑的几种方式
class 装系统
{
public abstract void 修电脑方法_U盘();
public abstract void 修电脑方法_光盘();
public abstract void 修电脑方法_ghost镜像();}如果用抽象,个人认为如下比较合适class 装系统
{
public abstract void 修电脑方法();
}然后U盘,光盘,ghost三种不同的实现类都继承 Class 装系统,分别实现修电脑方法()这个方法
比如 张三是人的具体表现,那人就是对张三,李四,...的抽象,张三,李四是具体的可观存在,而人是抽象出来的,不是可观存在,为什么非要张三 李四都叫人呢 是因为符合人特征,人会说话,会吃饭,一个头有四肢,会走路,所以抽象为人,当然如果他们都瘸了,那也可以叫瘸子,因为符合瘸子的特征--腿瘸。这样跟现实很接近。把张三李四叫人的过程叫抽象。张三就是一个具体可观事物,也就是人的具体表现,叫做对象,张三李四抽象成人这个概念,人就是一个类。
张三 李四----》抽象----》人 对象<------抽象------->类
方法对类的能力的描述,人 --- 吃饭 ;属性是对类象的特征描述,四肢,一个脑袋
总结下,一个类一般是名词,属性也一般是名词,方法描述动作行为,一般是动词;
再看你上面的问题:
1、一个类 名字能叫” 装系统“ 这个就很不合适,
2、修电脑的 是个体,应该叫维修员代表一类
3、装系统是方法 不是一个类
4、class 修电脑的 extends 张三的电脑 你这个表示什么,莫非给人安装了电脑的脑子? 人怎么能继承电脑?以为是钢铁侠,给人安装芯片啊,电脑跟人一点关系都没有,怎么会继承,继承是子类要有父类的属性和方法。除非人能当电脑使用,那你这个可以。但是现实中大多数是不可能的。
5、张三的电脑 张三 这些都是具体可观存在,是对象不是类应该是 张三 = new 人();
如果张三是维修人员 那么 张三 = new 维修人员();好好看书 好好理解,你这全都不对。
class 选学校
{
public void 去清华();
public void 去蓝翔();
}
class 录取通知书 extends
{
public void 去清华()
{}
public void 去蓝翔()
{}
}
class 你自己
{
public static void arg(String XXX)
{
录取通知书 清华=new 录取通知书();
清华.去清华();
}
}
可以说这就是一个学霸考完试想的,是能去清华还是能去蓝翔,通知书下来了学霸开始选!择首先我觉得在没选择之前心里想的都是抽象的,选择完毕之后才等于实现。
我觉得你们都太在意代码了,代码是写的看看的并不是真要用的
{
public abstract void 装系统方法();
}public class U盘装系统 extends 装系统{
public void 装系统方法() {
// 实现用U盘装系统
}
}
public class 光盘装系统 extends 装系统{
public void 装系统方法() {
// 实现用光盘装系统
}
}
public class Ghost系统 extends 装系统{
public void 装系统方法() {
// 实现用用Ghost还原系统
}
}抽象类是多态的一种,对调用者来说,也就是对电脑城的客户来说,他需要一个“装系统”的对象,对他来说,只关对象有“装系统方法”,具体怎么实现,由子类确定。
class 选学校
{
public void 去清华();
public void 去蓝翔();
}
class 录取通知书 extends
{
public void 去清华()
{}
public void 去蓝翔()
{}
}
class 你自己
{
public static void arg(String XXX)
{
录取通知书 清华=new 录取通知书();
清华.去清华();
}
}
可以说这就是一个学霸考完试想的,是能去清华还是能去蓝翔,通知书下来了学霸开始选!择首先我觉得在没选择之前心里想的都是抽象的,选择完毕之后才等于实现。
我觉得你们都太在意代码了,代码是写的看看的并不是真要用的
有这样的代码就有这样的思维,这思维就不对。
abstract class waysOfRepairPC {
// 重装系统方法有很多, 所有方法统一抽象成一个抽象方法way(此处是根据楼主的意思写的, 细细想来应该是一个属性标识就可以, 子类中构造时赋予不同值)
public abstract void way();
}class USBWay extends waysOfRepairPC {
// 第一种方法:U盘安装, 这是对抽象的安装系统方法的一个具体实现
public void way() {
System.out.println("U盘装系统");
}
}class CDWay extends waysOfRepairPC {
// 第二种方法:光盘安装, 这是对抽象的安装系统方法的又一个具体实现
public void way() {
System.out.println("光盘装系统");
}
}class GhostWay extends waysOfRepairPC {
// 第三种方法:Ghost安装, 这是对抽象的安装系统方法的最后一个具体实现
public void way() {
System.out.println("Ghost装系统");
}
}/* 张三来修电脑问题, 这里不是继承关系, 而应该是合成关系 */
class Man {
private String name;
private waysOfRepairPC way;
public Man(String name, waysOfRepairPC way) {
this.name = name;
this.way = way;
}
}public class Test {
public static void main(String[] args) {
Man zhangSan = new Man("zhangsan", new USBWay()); // 张三是一个修电脑的人, 他会的修电脑方法是U盘安装
Man liSi = new Man("lisi", new CDWay()); // 李四是一个修电脑的人, 他会的修电脑方法是光盘安装
}
}我的理解 新毕业的程序员 有错的请各位指正
像你说的这些修电脑的流程,是因为他们都有这些过程,你脑子里想出这些步骤的脑力劳动就是抽象的过程。而不是具体的实现上。
至于java中的抽象类,只要知道有没实现的方法要子类实现就好了,不用执着于这些术语的理解
接口是功能性的,表述性的,你实现完了,他就有这个功能,讲的是一个点。
抽象类,是贯穿性的,是一条线,总领全局。