面向对象1

目录

 Java 内存的结构分析:

常用访问控制符:

 this 的注意事项和使用细节

构造方法/构造器

创建一个狗的对象:


类是抽象的,概念的;

对象是具体的,实际的;

对象是类创建的一个实例

类是对象的模板。

Java 内存的结构分析:

1) 栈: 一般存放基本数据类型(局部变量)

2) 堆: 存放对象(Cat cat , 数组等)

3) 方法区:常量池(常量,比如字符串), 类加载信息

常用访问控制符:

 this 的注意事项和使用细节

ThisDetail.java

1) this 关键字可以用来访问本类的属性、方法、构造器

2) this 用于区分当前类的属性和局部变量

3) 访问成员方法的语法:this.方法名(参数列表);

4) 访问构造器语法:this(参数列表); 注意只能在构造器中使用(即只能在构造器中访问另外一个构造器, 必须放在第一

条语句)

5) this 不能在类定义的外部使用,只能在类定义的方法中使用。

构造方法/构造器

1) 构造器的修饰符可以默认, 也可以是 public protected private

2) 构造器没有返回值

3) 方法名 和类名字必须一样

4) 参数列表 和 成员方法一样的规则

5) 构造器的调用, 由系统完成

创建一个狗的对象:

public class HomeWork07{
	public static void main(String[] args) {

		Dog d = new Dog();
		d.set("花花","橘色",3);
		d.show();
	}
}
class Dog{
	String name;
	String color;
	int age;
	public void show(){
		System.out.println("狗的名字:"+this.name);
		System.out.println("狗的颜色:"+this.color);
		System.out.println("狗的年龄:"+this.age);
	}
	public void set(String name,String color,int age){
		this.name = name;
		this.color = color;
		this.age = age; 
	}
}

不能随便查看人的年龄,工资等隐私,并对设置的年龄进行合理的验证。年龄合理就设置,否则给默认 年龄, 必须在 1-120, 年龄, 工资不能直接查看 , name 的长度在 2-6 字符 之间



public class Encapsulation01 {
    public static void main(String[] args) {

        Person per = new Person();
        per.setName("jack");
        per.setAge(30);
        per.setSalary(30000);
        System.out.println(per.info());

        //如果我们采用构造器指定属性
        Person smith = new Person("smith", 20, 50000);
        System.out.println("===smith的信息===");
        System.out.println(smith.info());
    }
}

class Person {
    public String name;//名字公开
    private int age;//age 私有化
    private double salary;//...

    //构造器 alt+inset


    public Person() {
    }

    public Person(String name, int age, double salary) {
//        this.name = name;
//        this.age = age;
//        this.salary = salary;
        setSalary(salary);
        setName(name);
        setAge(age);

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        //加入对数据的检验,
        if (name.length()>=2&&name.length()<=6){
            this.name = name;
        }else {
            System.out.println("名字的长度不对,需要2-6个字符,默认名字");
            this.name = "没名字";
        }
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        //判断
        if (age >= 1 && age <= 120) {
            this.age = age;
        } else {
            System.out.println("年龄要在1-120,你的输入不正确,默认年龄18");
            this.age = 18;
        }
    }

    public double getSalary() {
        //可以增加对当前对象的权限判断
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    //写一个方法,返回属性信息
    public String info() {
        return "信息为 name=" + name + " age=" + age + " 薪水=" + salary;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值