类与对象的总结

1.对象是具体存在的实体,具有明确定义的状态和行为;而类则是对
象所具有的方法和属性。 类是对象的抽象,而对象是类的具体实例。
类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是一
个模板,同时类也是一种自定义的数据类型。
如创建一个学生类:
public class Student{
//定义名称和分数属性
private String name;
private int score=0;
//设置名称的方法
public void setName(String n){
name = n;
}
//学习的方法
public void study(){
score+=10;
system.out.println(name+"正在学习中......");
}
//玩游戏的方法
public void play(){
score-=5;
system.out.println(name+"正在玩游戏中......");
}
//获取分数的方法
public int getscore(){
return score;
}
}

//定义一个老师类
public class teacher{
public static void main(String[] args){
//创建一个stu对象
Student stu = new student();
stu.setName("张三");
for(int i=0;i<5;i++){
stu.study();
}
for(int i=0;i<6;i++){
stu.play();
}
stu.getscore();
}


2.重载
每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表
(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内
定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,
就称作重载。即重载时相同名称成员的参数列表是不相同的(参数顺序和
类型)。 在重载中,多个同名方法中参数类型和个数不同。
如:
public void study(int score,int hour){
score+=hour/2;
system.out.println("正在学习中......");
}
public void study(int score){
system.out.println("没学到什么");
}

覆盖
它是子类中的一个方法覆盖了父类中的一个方法并且对其重写,以求达到不同的作用。对我们来说最
熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,
而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法
以外,我们在继承中也可能会在子类覆盖父类中的方法。在覆盖要注意以
下的几点:
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆
盖的效果;
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者
是其子类;
4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,
并没有对其进行覆盖。
如:
public setName(String name){
this.name = name;
}

多态
多态指的是相同类型的对象调用相同的方法的时候,由于继承和重写,得到的
结果不一定相同。


3.值传递与引用传递的区别
基本数据类型赋值属于值传递;引用类型之间赋值属于引用传递。
值传递传递的是实实在在的变量值;引用传递传递的是对象的引用地址。
值传递后,两个变量改变的是各自的值;引用传递后,两个引用改变的是同一个对象的状态。
如:
值传递->
public class Student{
public void ChangeInt(int t){
t = 100;
}
}

public class teacher{
public static void main(String[] args){
Student stu = new Student();
int i=1000;
stu.ChangeInt(i);
system.out.println("i现在的值为: "+i);
}
}
输出结果i为1000.

引用传递->
//创建一个student类
public class Student {
private String name;
public void setname(String n){
name = n;
}
public String getname(){
return name;
}

}

//创建一个Teacher类
public class Teacher {
public void changeName(Student st){
String newName = "改名字";
st.setname(newName);
}
public static void main(String[] args){
Student stu = new Student();
stu.setname("第一个");
Teacher te = new Teacher();
te.changeName(stu);
String name = stu.getname();
System.out.println("调用后的名字是: "+name);
}

}
输出结果为 :改名字
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值