您的位置:首页 > 编程语言 > Java开发

java基础内容笔记--类和对象

2018-03-21 15:32 218 查看
[b]【注意,本人小白一个,以下是个人根据教程的理解,如有疑惑,出错的地方,希望大家能够留言指出来,相互学习进步。】[/b]

java是一门面向对象的语言,有一个重要的实现是“万物皆为对象”,
首先
什么是类,根据网上的资料的了解,我认为,类是一个大的,概括一个对象的名称,比如说人“类”,猴“类”......
这个人“类”里面有男人、女人。
什么是对象,而人“类”中的男人、女人都是人“类”的对象,每个对象都有自己的状态和行为,比如说:男人有胡子,声音粗狂等等,行为有:吃饭、睡觉、跑步等等,女人也大同小异,

类的一般形式如下。
class 类名{
类型 实例变量名;
类型 实例变量名;
……
类型 方法名(参数){
//方法内容
}
……
}例子:class Human
{
//声明各类变量来描述类的属性
String name;
String sex;
int age;
String addr;
void work(){
System.out.println("我在工作");
}
void eat(){
System.out.println("我在吃饭");
}
}对“类”的使用权限申明有四个关键字



类中的方法(行为)在返回类型上有两种区别,一种是没有返回值的,没有返回值的用void来修饰,另一种是有返回值的,有返回值的要注意,返回值的类型和定义方法的类型是要相同的。
没有返回值的方法:
void eat(){
System.out.println("没有返回值的方法吃");//方法体
}
有返回值的方法:public String retrunString(){
string eat="有返回值的方法吃";//方法体
return eat;//返回值
}如果要给方法传递参数,那要在方法中写入接受参数:类型 方法名(参数类型 参数 1,参数类型 参数 2…){
//方法体
}例子:class Human {
String name;
String sex;
int age;
String addr;

void work() {//无返回值的方法
System.out.println("我在工作");
}

void eat() {
System.out.println("我在吃饭");
}

// 定义一个方法,返回值为 String 类型
String getState(int time) {//有返回值的方法,并且是带有参数的方法
String state = null;
if (time >= 0 && 24 >= time) {
if (time > 8 && time < 17)
state = "我在工作";
else if (time > 17 && time < 22)
state = "我在学习";
else if (time > 22 || time < 7)
state = "我在睡觉";
} else
state = "错误的时间";
return state;//返回值的类型和方法的类型是一样的(state的类型是string,方法getState类型也是string)
}
}

public class MethodDemo {
public static void main(String[] args) {
Human wangming = new Human();
// 设定对象的属性值
wangming.name = "王明";
wangming.age = 25;
wangming.sex = "男";
wangming.addr = "中国北京";
System.out.println(wangming.name + "晚上 23 点钟你在干嘛");
// 调用 getState()方法,把返回值打印出来
System.out.println(wangming.getState(23));
System.out.println("下午 15 点呢");
System.out.println(wangming.getState(15));
}

}
程序的运行结果如下。
王明晚上 23 点钟你在干嘛
我在睡觉
下午 15 点呢

我在工作
说到带有参数的方法,就要说方法的另一种特性-----方法的重载
方法的重载在我看的书籍上说的也通俗易懂,原文是:
【在 Java 中支持有两个或多个同名的方法,但是它们的参数个数和类型必须有差别。这种
情况就是方法重载(overloading)。重载是 Java 实现多态的方式之一。
当调用这些同名的方法时,Java 根据参数类型和参数的数目来确定到底调用哪一个方法,

注意返回值类型并不起到区别方法的作用。】
我个人理解的是,方法就是一个人的行为,就拿吃东西这个行为做为比喻,吃东西有很多中的方式,我们平常吃东西都是用筷子来吃东西,这个筷子就是方法中的参数,但是吃不同的东西用的工具(参数)也就不一样了,吃牛排用刀叉,吃意大利面就用叉子等等,但是有个不变的是,发起吃东西这个行为的是同一个人(方法名相同),所以是根据不同的需求(参数)来完成不同的事情(调用不同参数的方法,方法名相同)public class OverloadDemo {
// 定义一系列的方法,这些方法的参数是不同的,通过参数来区别调用的方法
void method() {
System.out.println("无参数方法被调用");
}

void method(int a) {
System.out.println("参数为 int 类型被调用");
}

void method(double d) {
System.out.println("参数为 double 方法被调用");
}

void method(String s) {
System.out.println("参数为 String 方法被调用");
}

public static void main(String args[]) {
OverloadDemo ov = new OverloadDemo();
// 使用不同的参数调用方法
ov.method();
ov.method(4);
ov.method(4.5D);
ov.method("a String");
}
}程序的运行结果是:无参数方法被调用
参数为int类型被调用
参数为double方法被调用
参数为String方法被调用这里有个特殊的情况,当参数类型不完全匹配时候,java的自动类型转换会起作用。
例子:public class OverloadDemo2 {
void method() {
System.out.println("无参数方法被调用");
}

void method(double d) {
System.out.println("参数为 double 方法被调用");
}

void method(String s) {
System.out.println("参数为 String 方法被调用");
}

public static void main(String args[]) {
OverloadDemo2 ov = new OverloadDemo2();
ov.method();
ov.method(4);
ov.method(4.5D);
ov.method("a String");
}
}这个例子和上一个例子是基本相同,只是去掉了参数为int类型的方法,运行结果是:无参数方法被调用
参数为double方法被调用//原本是参数为int的方法被调用
参数为double方法被调用
参数为String方法被调用当调用 method(4)时候找不到 method(int),Java 就找到了最为相似的方法 method(double)。
这种情况只有在没有精确匹配时才发生。

对象

java是万物皆为对象,要想创建一个对象,并未使用,根据我看到教程上说,分成你爱那个步骤,第一个步骤,声明这个类的类型的变量,这个变量不是对象本身,而是用过它可以引用一个实际的对象(个人理解为代理人员),然后获得一个类的实例对象把它赋值给这个变量,通过new运算符完成的,而new运算符实际上只是为这个对象分配一个内存空间。Human wangming;
wangming=new Human();解读:第一行声明一个 Human 类的变量 wangming,第二行通过 new 运算符获得一个对象实例
并为其分配内存,获得对象实例赋值给 wangming。上面的过程可以合并为一个语句。
上面的也可以写成一串代码:Human wangming=new Human();如何使用对象所包含的状态和行为,是通过“.”来实现调用状态和行为。wangming.eat();例子:public class HumanDemo {
public static void main(String args[]) {
// 创建一个对象
Human wangming;
wangming = new Human();
// 对对象的实例变量赋值
wangming.name = "王明";
wangming.age = 25;
wangming.sex = "男";
wangming.addr = "中国北京";
System.out.println("姓名: " + wangming.name);
System.out.println("性别:" + wangming.sex);
System.out.println("年龄:" + wangming.age);
System.out.println("地址:" + wangming.addr);
System.out.println("在干什么?");
wangming.eat();//调用方法
}
}运行的结果是:姓名: 王明
性别:男
年龄:25
地址:中国北京
在干什么?
我在吃饭
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: