学习笔记】一. Java类与对象,类的继承和接口"/>
【学习笔记】一. Java类与对象,类的继承和接口
1.类与对象
Java是一种面向对象的程序设计语言。它不同于面向过程的语言,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。我想正是因为它可以提供一种模块化的手段完成任务,使得更适合企业中应用,几个部门的人分别完成部门的小模块,最后整合为一个大的模块完成任务。而且各个模块也都是独立的,未来也可以用在别的项目中,可以提升效率。
这些模块就是类,它包含属性和功能。所有的事物都可以通过它的属性以及方法定义。比如狗,属性有:品种名;颜色;大小等,方法有:跑;叫等,车的属性有品牌,颜色,各项性能;方法有运动。
属性的格式:访问修饰符 属性类型 属性名;
方法的格式:访问修饰符 返回值类型 方法名(参数类型 参数名){方法体};
访问修饰符有四种:
private(本类可访问,外部类访问需先在本类中创建set、get方法);
protected(本包和所有子类可见);
public(对外部完全可见);
无(本包可见);
public class Hero {public String name;public int life;public int power;public void attack(Hero h) {life -= h.power;System.out.println(name + "发起攻击,敌人生命力-"+power+"对手当前生命值"+life);}
}
这里定义了一个游戏英雄类,里面包括英雄的名字、生命值、攻击力等属性,还有发动攻击的方法。
定义好类以后我们还不可以直接使用,需要依靠对象,对象就是把抽象的类具体化。通过下面的格式使用类,声明对象名并分配存储空间,再将对象设置初始化。
Hero yase = new Hero();
Hero Dianwei = new Hero();
yase.name = "亚瑟"
yase.life = 250;
yase.power = 20;
2.类的继承
java这种面向对象的语言还有三大基本特征,即封装、继承和多态。
类的继承:子类继承父类,用extends实现。
extends翻译为继承而不是扩展我觉得可以这样理解:子类继承了父类, 也将获得父类的全部成员变量和方法,类似于子女继承父辈的财产,而且继承有着清晰的继承线,如:水果---苹果---红富士---不同产地的红富士,符合Java中单继承的特点。
若子类中没有定义属性和方法那么调用的时候直接调用父类的属性与方法。子类继承了父类, 并以父类为基础,额外增加新的成员变量和方法。除了增加新的成员变量和方法,子类还可以对父类中的方法进行重写。这种设计会大大提升代码更新的效率,开发者只需在原有父类的基础上新增属性、重写方法即可,无需再花费时间精力在已有的代码上。还有,Java只支持单继承,既一个子类只能继承一个父类,这里无法实现多继承的缺点也是后面接口要补充的作用。
下面分别建了两个子类,继承Hero类,并重写了其中的attack方法:
public class Yase extends Hero{ public void attack(Hero h) {life -= h.power;System.out.println(name + "发起攻击,典韦生命力-"+power);}}
public class Dianwei extends Hero {public void attack(Hero h) {life -= h.power;System.out.println(name + "发起攻击,亚瑟生命力-"+power);}
}
如果需要在子类方法中调用父类被覆盖的实例方法,则可以使用 super 限定来调用父类被覆盖的实例方法。例如:
在五子棋项目中,为了实现在改变窗口状态后使得棋盘内的数据得到保留,我们新建了MyFrame类继承JFrame类,并重写了paint方法,但要用JFrame中的paint进行绘制,此时使用super.paint调用父类中未被改写的方法。
public class MyFrame extends JFrame{public void paint(Graphics g) {super.paint(g);int n;int a = 50;int x0, y0, a0, b0,c0,d0,x,y;c0 = 50;d0 = 50;a0 = 50;b0 = 50;for(n = 16;n >= 1;n--) {g.drawLine(c0,700,d0,50);//竖线g.drawLine(50,a0,800,b0);//横线c0 += a;d0 += a;b0 += a;a0 += a;}
}
3.接口
接口的官方定义是:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。通俗来讲接口就是一个特殊的类(用interface定义),它内部的属性是静态的常量(由public static final修饰,默认省略);方法是抽象的方法(public abstract修饰)
public interface Test {public int a = 0;public abstract void method();
}
我理解的接口就类似于电脑的USB接口,USB接口本身没有意义,也没有具体的功能,但它可以通过连接不同的设备实现不同的功能。
Public class USB interface(){Public static void read(){}
Public static void write(){}
}Public class Upan implements USB{Public void read(){System.out.println(“读取数据”);}Public void write(){System.out.println(“读取数据”)}
}
五子棋游戏项目中使用了MouseListener接口与ActionListener接口,使用的时候必须重写它的方法,把抽象变为具体的方法去实现相应功能。
public class PlayMouse implements MouseListener,ActionListener {重写抽象方法}
更多推荐
【学习笔记】一. Java类与对象,类的继承和接口
发布评论