《黑马程序员》java笔记->【02】关于封装,构造函数

-------  android培训java培训、期待与您交流! ----------

关于封装,构造函数,this关键字

私有仅仅是封装的一种体现形式,凡是私有的都可以算封装。

//setAge(),和getAge()方法,其中对Person()类中age进行封装
class Demo19
{
 public static void main(String[] args)
 {
  Person a1=new Person();
  a1.setAge(0);//设置年龄
  a1.run();
  
 }
  
}

class Person
{
 private int age;//age私有,进行封装
 public void setAge(int a)
 {
  if(a>0&&a<130)
   this.age=a;
  else
   System.out.println("年龄非法");
 }
 public int getAge()
 {
  return this.age;
 }

 public void run()
 {
  System.out.println("年龄="+this.age); 
 }
 
}
---------------------------
构造函数

将构造函数私有化,这样其他程序就无法创建该类的对象了。
例如:将功能类的构造函数私有化,功能方法静态修饰

类中的方法是静态就不需要创建对象了,所以本类中就可以将构造函数私有化private


  1.构造函数和类名相同,不用定义返回值,没有具体的返回值
  2.每一个对象是个实体,实体用构造函数进行初始化后才可以使用
  3.任何类都有默认的构造函数
  4.对象一创建就调用构造函数,一般函数只有对象创建完成后,所需时才会被调用
  5.构造函数只能被执行一次,一般函数可以执行多次
  6.描述事物时候一开始就存在的属性和行为,那么就用构造函数定义

class Demo20
{
 public static void main(String[] args)
 {
   // Person 明确要创建Person类的对象
   // new是开辟空间的关键字.
   // ()需要通过哪个构造函数进行初始化。
  Person p=new Person();
  p.speak();
  
 }
}
class Person
{
 //指定构造函数后没有系统默认的构造函数,如果不指定就有系统默认的构造函数Person(){}
 Person()
 {
  /**
  if(……)
   return……
  */
  System.out.println("person run");
  //构造函数中也有return语句,用来控制结束初始化
 }
 public void speak()
 {
  System.out.println("speak");
 }
}

-------------------------
//多个构造函数,多个初始化
//一般函数调用可以用this.函数()
//构造函数之间的调用可以使用this(指定具体实参明确要调用的构造函数)
class Demo20
{
 public static void main(String[] args)
 {
  Person p=new Person("lisi");
  p.information();
  Person p1=new Person("wangwu",20);
  p1.information();
  Person p2=new Person("zhangsan",20);
  p2.information();
  System.out.println(p2.compareAge(p1));
 }
}
class Person
{
 private String name;
 private int age;
 //构造函数
 //当一个类中存在着多个构造函数时候,
 //他们的存在形态是重载

 Person()
 {
  System.out.println("person run");
 }
 Person(String name)
 {
  //构造函数调用,不能用this.被调用函数();
  this();
  this.name=name;
  //可用this(name);
 }
 Person(String name,int age)
 {
  this.name=name;
  this.age=age;
 }
  public void setName(String name)
 {
  this.name=name;
 }
 public String getName()
 {
  return this.name;
 }
 public void information()
 {
  System.out.println(name+":"+age);
 }
 public void show()
 {
  //用this调用information()函数
  this.information();
 }
 //和任意一个Person对象比较其中的年龄
 public boolean compareAge(Person p)
 {
  return p.age==this.age;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值