封装 继承 构造体(构造方法)

封装

1.将属性的修饰符写为private,来限制对属性的访问。
package fdt;
public class People {
//  下面的属性犹如电脑机箱中的很多零部件,考虑到安全,为了防止外部对其进行损坏,所以会用一个机箱包裹起来
    private String name;
	private int age;
	private double weight;
	private double height;
	private boolean sex;
	//该属性只能本类才能访问,其他类无法访问
2.Java文件对其访问属性,必须通过方法,下面方法就犹如电脑上的USB接口。对于一个属性就会存在两个对应的方法(get 和 set)
public void setName(String name) {
 	
//		this代表本类的对象 关键字   “我的”
//		将来谁调用该方法,this指的是谁
 	this.name = name;
 }
 
	public String getName() {
 	    return name;
 }

    public int getAge() {
 	    return age;
 }

    public void setAge(int age) {
 	
      	if (age < 0) {
 	     	this.age = 0;
 		    return;
 	}
 	this.age = age;
 }

    public double getWeight() {
 	     return weight;
 }

 public void setWeight(double weight) {
 	this.weight = weight;
 }
 
 public void setHeight(double height) {
 	this.height = height;
 }
 public double getHeight() {
 	return height;
 }
 
 public void setSex(boolean sex) {
 	this.sex = sex;
 }
 
 
//     	注意:boolean的getter方法名为isXxx
 public boolean isSex() {
 	return sex;
 }
 
}

3.在主方法Java文件中,要注意对 set 和 get 的使用(留心观察下面代码)。
package com.madling;

import fdt.People;

public class Text {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		People sunsun = new People();
		sunsun.setName("傻子");
		sunsun.setAge(15);
		sunsun.setHeight(175.0);
		
		System.out.println("名字:" + sunsun.getName() + "\n" + 
		                   "年龄:" + sunsun.getAge() + "\n" +
		                   "身高:" + sunsun.getHeight());

	}

}

————————————————————————————————————————————————

继承

1.关键字 extends 扩展

继承存在的意义:子类会继承父类所有非私有的属性和方法。

//   继承的基本形式
class 父类 {
}
class 子类 extends 父类 {
}
2.继承是一种扩展。

在实际开发中,会把不同类的相同代码提取出来,抽离成一个父类,然后继承父类即可。

3.java是单继承,不支持多继承,可以多重继承

继承的多种模式

4. Object是顶级父类,任何类最终都继承于它

在这里插入图片描述

在这里插入图片描述

——————————————————————————————————————————-------------------

构造方法(构造器constructor)

创建对象用的,并且完成对象的初始化(属性赋值)
该图为方法的调用
该图是:构造方法之后的方法的调用

构造方法的基本结构

public People(){
------ // 没有返回类型且名字要和类名相同
}

————————————————————————--------------------------------------------

1. 无参构造
任何一个类创建默认都带一个无参构造,用于创建对象的,在new之后。

默认的构造是隐藏起来,当然我们可以让它显式的呈现出来
//	无返回值类型  名字与类名相同
	public People() {
		System.out.println("当此方法执行完毕后,创建了一个新对象");
	}
2.有参构造
//	有参
	public People(String name, int age, double weight) {
		this.name = name;
		this.age = age;
		this.weight = weight;
	}
	
//	有参构造的参数是不定的
何时会用到?

一次性创建对象并完成对象的初始化

People lisiPeople = new People("xiaosi",0,2);
3. 子类的有参构造问题

	public Man(String name,int age,double weight) {
		
//		下面的代码调用的父类有参构造,完成的子类对象的初始化。
		super(name, age, weight);
	}

综合代码

People.java

package com.zhiyou.model;

public class People {
	
	private String name;
	private int age;
	private double weight;
	
	
//	无返回值类型  名字与类名相同
	public People() {
		System.out.println("当此方法执行完毕后,创建了一个新对象");
	}


//	有参
	public People(String name, int age, double weight) {
		this.name = name;
		this.age = age;
		this.weight = weight;
	}
	
//	有参构造的参数是不定的
	



	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;
	}

	
	public double getWeight() {
		return weight;
	}

	public void setWeight(double weight) {
		this.weight = weight;
	}
	
	
}

Man.java

package com.zhiyou.model;

public class Man extends People {

	public Man(String name,int age,double weight) {
		
//		下面的代码调用的父类有参构造,完成的子类对象的初始化。
		super(name, age, weight);
	}
}

Test.java

package com.zhiyou.test;

import com.zhiyou.model.Man;
import com.zhiyou.model.People;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		People zhangsanPeople = new People();
		
//		对象的初始化
//		给刚生下来的小孩设置初始值
		
		zhangsanPeople.setName("zhangsan");
		zhangsanPeople.setAge(1);
		zhangsanPeople.setWeight(4);
		
		
//		上面一坨代码,就可以用一行代码搞定,也就是调用有参构造
		
		People lisiPeople = new People("xiaosi", 0, 2);
		
		
//		下面new 后调用的仍旧是父类的有参构造,返回的是父类的对象
//		so,构造方法是不能被继承的。
//		Man wangwuMan = new People(name, age, weight);
		
		
		Man wangwuMan = new Man("wangwu", 1, 5);
		
		System.out.println(wangwuMan.getName()+","+wangwuMan.getAge() + "," + wangwuMan.getWeight());

	}

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值