校园网站建设开题报告,儿童玩具网站建设策划书,域名年龄对seo的影响,网页版微信登录显示二维码已失效上一篇主要介绍了面向对象的思想以及内存实现#xff0c;关于类与对象感觉写的不够好#xff0c;因此才会有这一篇作为补充#xff1b; 一#xff1a;类与对象
#xff08;1#xff09;类
一些相同属性和行为的事物的统称#xff0c;比较广泛、抽象#xff0c;比如… 上一篇主要介绍了面向对象的思想以及内存实现关于类与对象感觉写的不够好因此才会有这一篇作为补充 一类与对象
1类
一些相同属性和行为的事物的统称比较广泛、抽象比如人类动物类鸟类
含有属性和行为可以有其中一个也可以都有属性一般用来描述对象的特征行为用来描述对象可以干什么。
比如动物类中有一个对象狗 属性狗有名字体重 行为狗会吃饭睡觉
在Java中先有类再有对象的 public class ClassAnimal {/*属性狗有名字体重行为狗会吃饭睡觉*///成员变量属性}2属性成员变量
属性狗有名字体重 权限修饰符 数据类型 变量名一般不对变量名赋值毕竟对象的属性一般不相同
如public String name ; // 名字属性
后面我们再说说 权限修饰符 的事情
public class ClassAnimal {/*属性狗有名字体重行为狗会吃饭睡觉*///成员变量属性public String name;public int weight;}3 行为成员方法
行为狗会吃饭睡觉
我们先了解基本的行为的创建权限修饰符 返回值类型 方法名
无返回值类型无形参列表 public void eat ( ) { System.out.println( 爱吃骨头头 ) ;
}
public class ClassAnimal {/*属性狗有名字体重行为狗会吃饭睡觉*///成员变量属性public String name;public int weight;//成员方法行为public void eat(){System.out.println(爱吃骨头头);}public void sleep(){System.out.println(睡觉睡得死);}
}4对象
类的具体表现用于调用类的 属性 和 行为
对象的创建类名 对象名 new 类名
如ClassAnimal dog new ClassAnimal ( ) ;
可以仿照 Scanner 的用法毕竟都是引用类型 : Scanner scn new Scanner ( ) ;
如果类与对象不在同一包下第一步需要导包import 包名 . 类名
public class dog {public static void main(String[] args) {ClassAnimal dognew ClassAnimal();}
}对象调用类的属性和方法对象名 .
public class dog {public static void main(String[] args) {ClassAnimal dognew ClassAnimal();dog.name大黄;dog.weight50;dog.eat();dog.sleep();System.out.println(dog.name\tdog.weight);}
}C:\Java\jdk-17.0.11\bin\java.exe -javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar13016:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin -Dfile.encodingUTF-8 -classpath C:\Test\classDemo\out\production\classDemo dog
爱吃骨头头
睡觉睡得死
大黄 50进程已结束,退出代码05注意事项
类的 属性 和 行为 在 main 方法外创建
成员变量有默认值规则与数组相同 二案例演示 定义一个手机类有 颜色品牌价格的属性有打电话发消息的行为创建对象并调用 如下为定义的手机类
public class ClassPhone {//成员变量颜色品牌价格public String color;public String brand;public int price;//成员方法打电话发消息public void call(String who){System.out.println(给who打电话);}public void message( ){System.out.println(总爱发消息);}
}如下为创建的类的对象并进行调用可以看出成员变量的默认值符合数据类型的默认值的规则
public class phone {public static void main(String [] args){//创建对象ClassPhone cnew ClassPhone();System.out.println(c.brand);//nullSystem.out.println(c.color);//nullSystem.out.println(c.price);//0System.out.println( );c.brandhuawei;//华为c.colorblack;//黑色c.price6999;//6999System.out.println(c.brand);System.out.println(c.price);System.out.println(c.color);c.call(刘备备);c.message();}
} 2两个对象使用同一个类
两个对象互不干扰
public class phone {public static void main(String [] args){//创建对象ClassPhone cnew ClassPhone();c.brandhuawei;//华为c.colorblack;//黑色c.price6999;//6999System.out.println(c.brand);System.out.println(c.price);System.out.println(c.color);c.call(刘备备);c.message();System.out.println( );//再次创建对象ClassPhone c1new ClassPhone();c1.brand小米;//华为c1.colorblue;//黑色c1.price5999;//6999System.out.println(c1.brand);System.out.println(c1.price);System.out.println(c1.color);c1.call(曹操);c1.message();}
}C:\Java\jdk-17.0.11\bin\java.exe -javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar6083:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin -Dfile.encodingUTF-8 -classpath C:\Test\classDemo\out\production\classDemo phone
huawei
6999
black
给刘备备打电话
总爱发消息小米
5999
blue
给曹操打电话
总爱发消息进程已结束,退出代码03两个引用指向同一个对象
将 c 的地址赋给 c1因此 c1 根据地址找到 c 的属性;
public class phone {public static void main(String [] args){//创建对象ClassPhone cnew ClassPhone();c.brandhuawei;//华为c.colorblack;//黑色c.price6999;//6999System.out.println(c.brand);System.out.println(c.price);System.out.println(c.color);c.call(刘备备);c.message();System.out.println( );//再次创建对象ClassPhone c1c;System.out.println(c1.brand);System.out.println(c1.price);System.out.println(c1.color);c1.call(曹操);c1.message();}
}C:\Java\jdk-17.0.11\bin\java.exe -javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar6228:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin -Dfile.encodingUTF-8 -classpath C:\Test\classDemo\out\production\classDemo phone
huawei
6999
black
给刘备备打电话
总爱发消息huawei
6999
black
给曹操打电话
总爱发消息进程已结束,退出代码0三使用对象作为方法的参数
当一个对象作为形参传递给方法时传递的是对象的地址
public class phone {public static void main(String [] args){//创建对象ClassPhone cnew ClassPhone();c.brandhuawei;//华为c.colorblack;//黑色c.price6999;//6999//调用方法method(c);}public static void method(ClassPhone c){System.out.println(c.brand);System.out.println(c.color);System.out.println(c.price);c.message();}
}四使用对象作为方法的返回值类型
public class phone {public static void main(String [] args){//赋值调用ClassPhone ccmethod();System.out.println(cc.price);//调用System.out.println(cc.brand);//调用System.out.println(cc.color);//调用cc.call(刘备); //调用方法cc.message(); //调用方法}//方法的返回值类型为 对象public static ClassPhone method( ){//创建对象ClassPhone cnew ClassPhone();c.brand小米;c.price3999;c.color红色;return c;}
}
C:\Java\jdk-17.0.11\bin\java.exe -javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar8352:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin -Dfile.encodingUTF-8 -classpath C:\Test\classDemo\out\production\classDemo phone
3999
小米
红色
给刘备打电话
总爱发消息进程已结束,退出代码0五局部变量与成员变量
1位置不同
成员变量定义在 main 方法中 局部变量定义在方法中
public class Extend {public static void main(String[] args) {String name;//全局变量}public void method(){int a20;//局部变量//System.out.println(a);}
}2作用域不同
成员变量在整个类中都可以使用局部变量只能在该方法内使用
public class Extend {public static void main(String[] args) {int age100;//全局变量System.out.println(age);method();//无法调用}public void method(){int a20;//局部变量System.out.println(a);}
}3默认值不同
局部变量在栈内存中无默认值必须赋值才能使用
成员变量在堆内存中默认值的规则与数组相同
4生命周期不同
局部变量随方法的入栈而创建随方法的出栈而消失
成员变量随随对象的创建而产生随着对象被垃圾回收而消失