java如何将局部对象属性全部赋默认值_建议收藏】关于⾯向对象、封装,还没有见过总结的这么。。。
作者:吉吉冕下
类和对象
什么是类
类是⼀组相关属性和⾏为的集合,可以看作是⼀类事物的模板,⽐如说:⽆论中年⼈、⽼年⼈还是⼩孩,都有⾝⾼、体重(这是属性),都会吃饭、睡觉(这是⾏为),那么我们就可以抽取出这些共有的属性和⾏为,封装为⼀个类。类由两部分组成:
属性:事物的状态信息
⾏为:事物能够做啥
什么是对象
对象是某类事物的具体体现,对象是类的⼀个实例,⽐如说:⼀株蒲公英是植物类的具体实例。
对象和类的关系
类是对象的抽象
对象是类的具体
类的定义
格式
修饰符 class关键字类名{
//成员变量(属性)
//成员⽅法(⾏为)
}
定义类
public class Student{
String name;//姓名
int age;//年龄
//吃饭
public void eat(){
System.out.println("吃饭");
}
}
Student是类名,name和age是成员变量(属性),定义的⽅式和声明普通变量⼀样;eat是成员⽅法(⾏为)。
创建和使⽤对象
格式
类名对象名=new 类名();
public static void main(String[] args){
//创建Student类实例
Student s=new Student();
//使⽤成员变量
System.out.println(s.name);//null
System.out.println(s.age);//0
//调⽤eat⽅法
s.eat();
}
成员变量的默认值
如果没有对成员变量进⾏赋值的话,那么将会使⽤它们的默认值
public class Student {
int age;
float weight;
char sex;
boolean isMan;
String name;
public void eat(){
System.out.println("吃饭");
}
public static void main(String[] args) {
Student s=new Student();
System.out.println(s.age);//0
System.out.println(s.weight);//0.0
System.out.println(s.isMan);//false
System.out.println(s.name);//null
System.out.println(s.sex=='\u0000');//true
}
}
局部变量
局部变量在⽅法内部定义java接口有没有构造方法
public class Student {
int age;
public void say(){
//定义局部变量a
int a=1;
System.out.println(a);
}
//形参也是局部变量
public void hel(int a){
System.out.println(a);
}
}
成员变量和局部变量的区别
在类中的位置不同
成员变量定义在类中、⽅法外
局部变量定义在⽅法中或⽅法声明上(形参)
作⽤范围不同
成员变量作⽤范围是整个类
局部变量的作⽤范围是它所在的⽅法
public class Student {
int age;
public void say(){
//定义局部变量a
int a=1;
System.out.println(age);
System.out.println(a);
}
public void hel(){
System.out.println(age);
//System.out.println(a); ⽆法访问到a
}
}
是否有默认值
成员变量有默认值
局部变量没有默认值,必须定义赋值,然后使⽤
public void say(){
int a;
//System.out.println(a); 未赋值⽆法使⽤
}
在内存的位置
成员变量在堆内存中
局部变量在栈内存中
⽣命周期不同
成员变量随着对象的创建⽽存在,随着对象的消失⽽消失
局部变量随着⽅法的调⽤⽽存在,⽅法调⽤完毕它便消失
封装概述
封装是指将数据和操作数据的⽅法绑定起来,对数据的访问只能通过定义的接⼝。我们在类中编写的⽅法就是对实现细节的⼀种封装;我们编写的类就是对数据和数据操作的封装。
封装步骤
使⽤private修饰符将变量修饰为私有变量(只有本类中可以访问)
对外提供公有的可以访问私有变量的⽅法,如getXXX()⽅法和setXXX()⽅法
public class Test1 {
public static void main(String[] args) {
Person p=new Person();
//System.out.println(p.name); ⽆法直接访问
System.out.Name());//null 只能通过对外提供的接⼝进⾏访问
}
}
class Person{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
注意
⼀个.java⽂件中可以定义多个类,但是只能有⼀个类使⽤public修饰符
this关键字代表正在操作的那个对象,this.name表⽰该对象的成员变量name,区别于局部变量name
构造⽅法
我们知道,想要使⽤对象内的东西,必须要先使⽤new关键字创建对象,那么它是怎么创建出来的呢?答案就是构造⽅法,可是我们的类中没有定义构造⽅法啊?虽然没有定义,但是我们每个类都有⼀个默认值的⽆参构造⽅法,我们在new对象的时候就会调⽤构造⽅法。那么我们该如何定义⾃⼰的
构造⽅法呢?
格式
【修饰符】类名(【参数列表】){
//代码
}
注意点
构造⽅法的名字必须和类名⼀致
构造⽅法没有返回值(其实是省略了,因为构造⽅法只能返回本类的类型)
⼀旦⾃⼰DIY了构造⽅法,那么默认的⽆参构造⽅法就⽆效了
没有参数列表的是⽆参构造⽅法,有参数列表的是有参构造⽅法
我们可以在⼀个类中定义多个构造⽅法
public class Test1 {
public static void main(String[] args) {
//使⽤⽆参构造创建对象
Person p1=new Person();
//使⽤有参构造创建对象
Person p2=new Person("张三");
}
}
class Person{
private String name;
private int age;
/
/⽆参构造⽅法
public Person(){
System.out.println("我是⽆参构造⽅法");
}
//我是有参构造⽅法
public Person(String name){
System.out.println(name);
System.out.println("我是有参构造⽅法");
}
}
执⾏结果:
我是⽆参构造⽅法
张三>
我是有参构造⽅法
使⽤构造实现封装
前⾯通过编写setXXX⽅法和getXXX⽅法以及私有化成员变量实现封装,这⾥我们通过构造⽅法实现封装
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论