类和对象、继承

本来想第一篇博客写的洋气一点,但由于各种懒,最后被胡哥下了"不发博客,不许上课!"的最后通牒,只能放弃原来的小心思,安安静静的做技术总结了..... :oops: :oops: :oops:

①类与对象
类与对象应该是所有学习面向对象语言的第一课,无奈我当初学C++是竟然把class和struct搞在一起,过了很久在知道他俩根本就不是"好基友"...= =
类就相当于一个集合,一个总称,比如人、比如桌子,有点想英语中的集体名词,但就像一个大空盒子,里面什么都没有,你要创建对象,把它填满。比如学生类和一个学生对象:
//创建类
public class Student{
//属性
private String name;
//方法
public void study();
}
//创建对象 [color=red]关键字是new[/color]
Student stu = new Student();


②构造器和方法的区别
构造器其实就是构造方法,方法呢也是方法,只不过构造器是类的构造函数,而方法就是普通的函数。①中如果在Student中间加上

public Student(String name){
this.name = name;
}


就是构造函数,而且我还把它给重载了(手好欠-_-!),因为他有一个灰常明显的表示就是他和类名相同,而①中study就是一个普通的方法,为什么呢,因为他们是有区别的:
(1)构造器的名称是固定的,要和类同名;而方法就随便起,当然也不能随便到和类名一样
(2)构造器是没有返回值的;而方法是有返回值的,比如void、int、String...
(3)每实例化一个对象呢,构造函数就要被自动调用一次;而方法是你不调用它,他是不会执行的
(4)百度上说呢,和方法一样,构造器可以有任何访问的修饰: public, protected, private或者没有修饰(通常被package 和 friendly调用). 不同于方法的是,构造器不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized。


③重写(overWrite)和重载(overLoad)的区别
重写呢,就是在存在继承关系的两个类中(或接口和实现),重新改写已有的方法的方法体,其他的不能变,而重载是在同一个类中只留下方法名,其余的随便变,但不一定全部改,在④中会给出代码示例

④类的继承和实现接口
这是关于类和接口两个东东了,java中有类,有接口,还有两者的中间过渡体--抽象类。
类的继承,就是简单的创建一个子类,让他继承父类,就像儿子从父亲那里继承财产一样。他可以继承父类的非私有属性和方法,同时呢,也能对父类中的方法在有需要的时候进行重载或者重写。

//创建一个类
public class Monster {
//怪兽的属性 名称和能力
public String name;
String ability;
//重载怪兽的构造函数
public Monster(String n,String a){
name=n;
ability=a;
}
//怪兽的方法 发动攻击
public int destory(){
System.out.println("怪兽"+name+"使用技能"+ability+"开始攻击。");
return 0;
}
//继承这个类
public class BigMonster extends Monster {
//子类自己的属性 攻击指数
int x=0;//初始化为0

//在子类的默认构造方法中默认调用父类的无参数的构造方法
public BigMonster(){
super();
}



//在子类中重写父类的函数 destroy
public int destory(){
int k=10;//设个参数作为下面函数的参数 用于增加技能指数
System.out.println("巨型怪兽"+name+"使用指数为"+x+"的技能"+ability+"在进行攻击");
return k;
}


//子类构造函数的重载
public BigMonster(String n,String a,int h){
super(n,a);
this.x = h;
}




//子类的方法
public int grow(int i){
int m=0;
m=destory();
if(m>=0)
i++;
else
i--;
return i;
}
public void showgrow(){
System.out.println("怪物"+name+"的技能从"+x+"级升级到"+destory());
}
}


实现接口就不一样了,他可以让子类继承,但是必须要重写接口中的抽象方法,但是接口中有好多方法的时候怎么办呢,答案就是全部重写!

//创建一个USB接口 关键字 interface
public interface USB {
//然后它里面的方法都不能有方法体,然后它的方法在实现中都必须要重写
public void read();
}
//实现这个接口 关键字 implements
public class Mp3 implements USB {
//必须重写接口的里面的方法
public void read(){
System.out.println("This is an mp3 player.");
}

}


第一篇就先写到这吧,尽管还是没有完成任务
其实这是一篇欠了差不多半年之久的博客。
2012年9月28日加入蓝杰,到2013年3月21日,我依旧在最后一组,比我晚到的周水平在和我一组后,又被尊为大神给我们讲了科赫雪花,心里肯定是不爽的,但是一想到人家有敲代码到凌晨两点的超能力,我还是觉得膜拜算了。
当初也不知道为什么,稀里糊涂的学了软件,加入蓝杰。因为对代码没有赤果果的热爱,没有强大的动力,没有必死的决心,所以作业能拖到最后绝不第一时间昨晚,寒假能早回家一天绝对不会参加集训,但是写完这篇博客,我倒是有了莫名的成就感,尽管这是最基础的知识,尽管可能我还没有200%的掌握
有一天上课,被一个学弟在递归的问题上秒杀了,所以,我觉得是到小宇宙爆发的时候了...
:!: 加油↖(^ω^)↗
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值