java:封装
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java:封装,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4534字,纯文字阅读大概需要7分钟。
内容图文
![java:封装](/upload/InfoBanner/zyjiaocheng/832/dbdc1898f41b406ebc0bf10c4d7e9a4a.jpg)
/*构造方法是一种特殊的方法,专门用于构造/实例化对象,
形式:[修饰符] 类名(){ }
构造方法根据是否有参数分为无参构造和有参构造*/
public class Dog {
String name;
int health;
int love;
String sex;
/*
无参方法(一般没有构造方法,系统默认无参方法,
同时可以直接在上面属性声明后面赋值,如果没有赋值,系统自动输入默认值)
但是加有参方法时,建议一定要把无参加上
修饰符+类名(){}*/
public Dog(){
health=90;
love=10;
}
public void showOf(){
System.out.println("我的名字叫"+name);
System.out.println("健康值:"+health);
System.out.println("亲密度:"+love);
System.out.println("性别:"+sex);
}
}
public class Penguin { //创建Penguin类 String name; int health=100; //属性 int love=0; String kind; public void pay(){ //方法 System.out.println("我的名字叫"+name); System.out.println("健康值"+health); System.out.println("亲密度"+love); System.out.println("品种"+kind); } }
import java.util.Scanner; public class Pet { public static void main(String [] ages){ Scanner arr=new Scanner(System.in); System.out.println("请输入宠物的名字"); String name=arr.next(); System.out.println("请选择宠物类型1.企鹅2.狗狗"); int a=arr.nextInt(); if (a==1){ Penguin sc=new Penguin(); //插入Penguin包 sc.name=name; //赋值(从输入录入的值) System.out.println("请选择性别1.Q女2.Q男"); int b=arr.nextInt(); if (b==1) { sc.kind="Q女"; //赋值 sc.pay(); }else { sc.kind="Q男"; sc.pay(); } }else { Dog sc=new Dog(); sc.name=name; System.out.println("请选择狗的种类1.土狗2.腊肠"); int b=arr.nextInt(); if (b==1){ sc.sex="雄性"; sc.showOf(); }else { sc.sex="雌性"; sc.showOf(); } } } }
4种结果
有参构造
/*构造方法是一种特殊的方法,专门用于构造/实例化对象, 形式:[修饰符] 类名(){ } 构造方法根据是否有参数分为无参构造和有参构造*/ public class Dog { String name; int health=10; int love=10; String sex; public Dog(){ } /*当构造一个对象时可以直接在构造方法中传递参数, 但是加有参方法时,建议一定要把无参加上 this 是一个关键字 表示对象本身,本质上是对象的地址,用来引用对象, this用于访问本对象属性,同时解决局部变量和成员变量同名的问题。 通过打印this中的引用,可以看出对象dog和this指向同一内存。 一般而言,dog(在下面提取Dog类可见)用于类的外部,this用于类的内部。 因为类的内部根本不知道dog变量名的存在。 修饰符 类名(是属于Pet的属性){}*/ /* 如果没有赋值 public Dog(String name,int health,int love,String sex){ //在Pet赋值 this.name=name; //pet先赋值给括号里的属性 this.health=health;// this.Dog类的属性=括号内的属性 this.love=love; this.sex=sex; }*/ //如果已经赋值,可以这样写 public Dog(String name,String sex){ //在Pet赋值 this.name=name; //pet先赋值给括号里的属性 this.sex=sex;// this.Dog类的属性=括号内的属性 } public void showOf(){ System.out.println("我的名字叫:"+this.name); System.out.println("健康值:"+this.health); System.out.println("亲密度:"+this.love); System.out.println("性别:"+this.sex); } }
public class Pet { public static void main(String [] ages){ //如果没有赋值这样写 //Dog dog=new Dog("黑狗",50,50,"雄"); //如果已经赋值这样写 Dog dog=new Dog("黑狗","雄");//类是用new引入 System.out.println("dog:"+dog);//对象的地址 dog.showOf();//用Dog类的方法输出 } }
两种结果
对象初始化内存图
方法的调用内存图
/*需求:统计宠物店有几只狗 统计宠物店有几只狗的功能应该放在类功能上,不应该属于某个对象 声明一个变量用于统计个数,这个变量应该被类的实例共享。 被类的实例共享的区域在方法区(Car.class) 用static关键字声明这样的变量 static 关键字表示静态,可以修改变量,也可以修饰方法。 静态变量 static 修饰的变量称为静态变量/静态属性,形式 :static 类型 变量名称 [= 初始值] 被static修饰的变量称为静态变量,归类所有, 分配在方法区(共享区)中的静态区,可以被类的实例共享访问。 */ public class Dog { String name; int health; int love; String sex; static int count=0; /*静态变量归类所有,也叫类变量,访问方式 [1] 类名.静态变量(推荐) [2] 对象.静态变量*/ public Dog(){ Dog.count++; }//必须两种构造都写 public Dog(String name,int health,int love,String sex){ this.name=name; this.health=health; this.love=love; this.sex=sex; Dog.count++;//必须两种构造都写 } public void showOf(){ System.out.println("我的名字叫:"+this.name); System.out.println("健康值:"+this.health); System.out.println("亲密度:"+this.love); System.out.println("性别:"+this.sex); System.out.println("我是第"+Dog.count+"只狗"); } }
public class Pet { public static void main(String [] ages){ Dog dog1=new Dog("黑狗",50,50,"雄"); dog1.showOf(); Dog dog2=new Dog("白狗",60,20,"雌"); dog2.showOf(); Dog dog3=new Dog("黑狗",60,50,"雄"); dog3.showOf(); System.out.println(Dog.count); System.out.println(dog2.count); //类名.静态变量 对象.静态变量 都得到狗的总数 // 所以建议选 类名.静态 因为选对象容易误会成这是第几只狗 其实所以德对象都是一样的 } }
内容总结
以上是互联网集市为您收集整理的java:封装全部内容,希望文章能够帮你解决java:封装所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。