蓝杰之牛刀小试1

1 类是什么,对象是什么?
学习c++接触过类,但是完全被他打败了,云里雾里。。。。

。。。。
现实生活中,存在很多形象的东西可以很容易的理解这个看

起来很玄乎的东西比如常见的名词:学生,老师,大学。而

对象就是类里面具体的某一个,例如学生类里的张超,王龙

辉,黄俊波;老师类里的张老师,胡老师,陈老师;大学类

里的中南大学,湖大,哈佛。
下一步就是将现实的东西或者叫想法用java语言表达出来,

就像用汉字表达一样.具体就得学习语法知识。(初级阶段只

需多大多练,语法来源不用管,就像学汉语从来不问为什么

要有主谓宾一样,用的多就会知道!!)
@@@@@@@@@@@@@@@@@@@@@@@@
//定义一个类型,比如学生类型,用到关键字class,代码是
public class Student{
}
对于任何一个类(型),肯定都有自己的特点(属性),比

如学生之所以成为学生,而不叫做电脑,应为学生有自己的

特点如:名字,性别,年龄,学号,学分等等代码如下
public class Student{

private String name;
private String sex;
private int age;
private int score;

}
然后是---设置---学生的名字,性别,年龄,学分代码:
public class Student{

private String name;
private String sex;
private int age;
private int score;
//设置学生的姓名
public void setName(String s){
name=s;
}
//设置学生的年龄
public void setAge(int t){
age=t;
}
//定义学生玩(的方法)
public void study(){
score+=score;
System.out.println(name+"正在玩CF很开心,学分

是:"+score);

}
}


@@@@@@@@@@@@@@@@@@@@@@@

对象 :对象是通过类来创建的。如创建一个学生对象,代码

如下:
//测试类型的定义
public class Test{
//主函数,照抄就行
public static void main(string args[]){
//创建一个学生对象
Student stu1=new Student();
//该学生stu1设置名字,年龄,玩
stu1.setName("小沈阳");
stu1.setAge(20);
stu1.study();
}

}
运行结果如下:小沈阳正在玩CF很开心,学分是:0


1 数据类型


数据类型:原始数据类型与引用类型。
原始数据类型是系统自带的,包括有:
字节型(Byte 8bite),整型(int 4byte)
,短整型(short 2Byte),长整型(long 8Byte),
字符型(char 2Byte),
浮点型(float 4Byte),双精度型(double 8Byte)。


数据类型的定义int A=10;float s=1.1。
引用类型是指有类创建的对象的类型。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2值传递与引用传递


值传递的范围是8个原始数据类型。代码如下:
public class Student{
//创建一个改变值的方法
public void changByte(Byte t){
t=125;
}

}


//创建一个Test类实现该调用
public class Test{
public static void main(String args[]){
Student s1=new Student();
Byte i=-50;

s1.changByte(i);
System.out.print("调用了changByte后,这里的i值是"+i);

}


}


代码输出得到的结果是:调用了changByte后,这里的i值是-50。

值传递是将类Test类中的i复制一个传给了形参Byte t,在方发
changByte中i的值确实是改变了,但结果并不影响Test类中的i值。


引用传递
//定义一个学生类型
public class Student{
public void setName(String s){
name=s;
}
public String getName(){
return name;
}
private String name;

}
//定义一个Manager类型
public class Manager{
public void changName(Student A){
String newName="CF救世主时代";
A.setName(newName);

}
}
//定义一个Test类型
public class Test{
public static void main(String args[]){
Student s1=new Student();
s1.setName("王龙辉");
Manager m1=new Manager();

m1.changName(s1);
String name=s1.getName();
System.out.print("这个时候你的名字是:"+name);

}


}
代码输出的结果是:这个时候你的名字是:CF救世主时代


总结:
对比两个实例可以清楚的知道值传递与引用传递的区别:
在两个Test类中都分别试图改变i的值与s1所指向的实体“王龙辉”,
但是值传递并没有改变i的值,一用传递改变了“王龙辉”成“CF救
世主时代”。


1继承
现实例子:大学生类继承学生类,中南大学学生类继承大学生类。
我们称学生类是父类,大学生类跟中南大学生是子类。同时大学生
类也是父类,中南大学生类是大学生类的子类(相对)。


继承的关键字是:extends.
代码如下:
//定义一个学生类
public class Student{
private String name;
private int energy=100;

//定义设置名字的方法
public void setName(String s){
name=s;
}
//定义玩穿越火线的方法
public void playCF(int hour){
energy-=hour*4;

System.out.print(name+"无语了,快挂科了,纠结中。。。"+energy);

}

}

//另外写一个大学生类,继承学生类

public class UnStudent extends Student{

//主函数
public static void main(String args[]){

UnStudent u1=new UnStudent();

//继承后调用Student类里的方法

u1.setName("宋远剑");
u1.playCF(100);

}


}

运行该代码得到的结果是:宋远剑无语了,快挂科了,纠结中。。。-300


总结:继承的好处很容易就可以看见了,对于大学生跟学生肯定有很多相似的
方法,用extends关键字就可以避免同样的代码在打一次,非常方便!!!



2 重写

重写:毕竟父类与子类会有些差别,大学生的方法跟学生类的方法肯定有不一样
的地方,这就要用到“重写”,即重写继承类里的方法。代码如下


//另外写一个大学生类,继承学生类

public class UnStudent extends Student{

public void playCF(int hour){

energy+=hour*3;
System.out.print(name+":虽然当时玩的很开心,后来很不爽,何去何从???"+energy);
}



//主函数
public static void main(String args[]){

UnStudent u1=new UnStudent();

//继承后调用Student类里的方法

u1.setName("宋远剑");
u1.playCF(100);

}


}
//这个类只是重写了方法playCF,输出的结果是:
宋远剑:虽然当时玩的很开心,后来很不爽,何去何从???400
(还有一点需要改动,由于权限的限制,Student类中private
String name;private int energy要去掉private。——意外收获)

3重载
重载:重载跟重写的区别在于重载要方法的参数是不相同的。
还是上一个例题:


//另外写一个大学生类,继承学生类

public class UnStudent extends Student{

public void playCF(int hour,int t){

energy+=hour*3;
energy+=energy*t;
System.out.print(name+":虽然当时玩的很开心,后来很不爽,何去何从???"+energy);
}



//主函数
public static void main(String args[]){

UnStudent u1=new UnStudent();

//继承后调用Student类里的方法

u1.setName("宋远剑");
u1.playCF(100);

}


}
输出的结果是:宋远剑:虽然当时玩的很开心,后来很不爽,何去何从???2000

4自动转型
自动转型是指子类对象会自动转型为父类对象,代码如下
public class UnStudent extends Student{
public static void main(String args[]){
//自动转型

Student u1=new Student();

//转型后只能调用父类中的方法

u1.setName("李胜楠");
u1.playCF(100);

}
输出结果为:李胜楠无语了,快挂科了,纠结中。。。-400


构造器
//构造器是用来在创建对象时调用用的例如:
new Student()用来创建一个新的学生对象,实际完整形式是new public Student();
//每一个类都有一个默认无参的构造器,而且必须跟类名字是相同的
//用关键字new来调用,无返回值标志void,即不能写成public void Student();
应该是public Student;举例如下:


//定义一个学生类
public class Student{
private String name;
private int energy=100;

//定义设置名字的方法
public void setName(String s){
name=s;
}
//定义玩穿越火线的方法
public void playCF(int hour){
energy-=hour*4;

System.out.print(name+"无语了,快挂科了,纠结中。。。"+energy);

}

}
-----该学生类里边有默认的无参构造器public Student();
————————————————
//定义一个Test类

public class Test {
public static void main(String args[]){
Student s1=new Student();
s1.setName("宋远剑");
s1.playCF(100);

}
}

—————————————————
下面用有参构造器
—————————————————
//定义一个学生类
public class Student{

private String name;
private int energy=100;

public Student(String s){
name=s;
}
//定义玩穿越火线的方法
public void playCF(int hour){
energy-=hour*4;

System.out.print(name+"无语了,快挂科了,纠结中。。。"+energy);

}
————————————————
//定义一个Test类
public class Test {
public static void main(String args[]){

Student s1=new Student("宋远剑");
s1.playCF(100);

}
}
两个Test类输出的结果是相同的:宋远剑无语了,快挂科了,纠结中。。。-300

//有参的构造器一旦创建,默认的无参构造器便失效,而且创建对象的时候就要
给对象初始化


!!1.构造器和方法的区别:
1形式上:构造函数没有返回值标志void,要有关键字new来调用。而且必须
与类名相同,每个类有一个默认的无参构造器。一旦编写了有参的构造器,默
认的就失效。

2具体作用上:构造器用来创建新的对象,方法是用来被对象调用。构造器
跟方法都可以被重载。




2.重写和重载的区别:
重载是在类中可以创建多个方法,他们具有相同的名字,不同的参数类型
和个数,不同的定义。在调用的时候可以输入不同的参数类型与个数达到
调用不同方法的目的。
重写指在子类中某方法对父类中的方法进行重新定义,但是方法名跟传入
的参数类型与个数需要相同,从而在调用子类的方法时不能执行父类的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值