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.重写和重载的区别:
重载是在类中可以创建多个方法,他们具有相同的名字,不同的参数类型
和个数,不同的定义。在调用的时候可以输入不同的参数类型与个数达到
调用不同方法的目的。
重写指在子类中某方法对父类中的方法进行重新定义,但是方法名跟传入
的参数类型与个数需要相同,从而在调用子类的方法时不能执行父类的方法。
分享到:
相关推荐
【标题】"蓝杰学习笔记备份1"涵盖了多个IT领域的知识点,主要集中在源码解析和工具使用方面。从标签来看,这些笔记可能包含了对软件源代码的深入理解以及实用工具的介绍和应用。 首先,源码分析是软件开发中的关键...
《蓝杰JavaScript学习笔记》是一份综合性的JavaScript学习资料,主要涵盖了JavaScript在网页动态操作、DOM操作以及事件处理等方面的基础知识。这篇笔记通过多个实例文件,如`dynamicCreateTable.htm`、`...
中国联通则推出了基于AGPS的星图业务和关爱之星服务,尽管存在终端成本高、室内定位不准确等问题,但仍显示出市场潜力。 总的来说,手机定位系统技术涉及到通信网络架构、信号处理、卫星导航等多个复杂环节。蓝杰实...
资源讲了一个使用java socket编写FTP client 的实例,可以学习java socket编程的基本步骤和原理
1. **startRobocode.bat**:这是一个批处理文件,用于启动Robocode平台。通过双击运行这个文件,用户可以快速地进入robocode的图形化界面,开始编写和运行机器人代码。 2. **RoboCode.jar**:这是Robocode的核心...
1. 连接建立:客户端通过TCP连接到中国移动的短信中心(SMSC),完成认证和心跳维护。 2. 消息提交:CMPP_SUBMIT报文用于提交短信,包含发送者、接收者、短信内容等信息。 3. 消息发送:SMSC收到提交的消息后,通过...
1.分布式计算的起因及基本原理 2.RMI体系结构 3.RMI服务器实现及编码 4.RMI客户机实现及编码 5.使RMI穿过防火墙--定制rmiSocket 6.Spring中的rmi应用 7.类似RMI的相关开源技术实现 -------具体请下载附件或...
本文将围绕"微博是这样炼成的:山寨QQ项目源码下载大全"这一主题,深入剖析两个关键文件——蓝杰版QQ客服端.jar和蓝杰版QQ服务器端.jar,揭示其背后的技术原理和实现机制。 首先,我们要理解QQ作为一款即时通讯软件...
- `蓝杰cmpp项目视频说明.txt`:这个文件可能是蓝杰公司关于CMPP项目的视频教程的文字说明,包含了项目实施过程中的指导和最佳实践。 5. **移动通信系统架构**:了解中国移动的网络架构,包括GSM、GPRS、EDGE、...
BlueBlood-OS这是一个类UNIX的64bit操作系统,从0开始完整的实现一个OS本篇README.md面向开发者上手指南以下指南将帮助您在本地机器上安装和运行该项目,...作者邵靳天@蓝杰您也可以在贡献者列表中提到所有参与该项目的