今日重点:
目录
一、类与对象--this关键字
* this关键字
* this代表的是当前类的对象,this代表的是当前方法的调用者
* this既然是代表方法的调用者,它实际上和对象的作用是一样的
* 既可以调属性,也可以调方法。
*
* 一个类中可以有什么?
* 属性,方法,构造器
*
* this不能用在static方法中。
*
* 开发中,this通常用在什么位置!
* 通常用在赋值,构造器赋值。package com.jsoft.morning; public class Ch02 { String str; int i; public Ch02(){ } public Ch02(String str) { this.str = str; } public Ch02(String str,int i){ // this.str = str; // 调用构造器 // 不需要写任何的名字 /* this调用构造器的要求 1、必须在构造器中使用this调用构造器 2、必须是第一句话(第一行代码) */ this(str); this.i = i; } public void show(String str) { /* 当使用对象调用属性时,调用的是成员变量 */ // Ch02 c = new Ch02(); // this(str); this.str = str; this.info(); // info(); } public void info(){ System.out.println(str + "," + i); } public static void main(String[] args) { // Ch02 c = new Ch02(); // c.show("哈哈"); // System.out.println(c.str); // Ch02 c2 = new Ch02("呵呵"); // c2.info(); Ch02 c3 = new Ch02("嘿嘿",20); c3.info(); Person person = new Person("张三",25); } }
二、面向对象特点之一--封装
1、思想层面
可以把相似功能的代码封装成一个方法
如果说一堆的方法都要重复使用,我们还可以把一堆的方法封装成一个类
2、代码层面
- 属性私有化,所有的属性都要使用private
- 提供一个公有的set,get 方法
getter方法能够按照客户的期望返回格式化的数据
setter方法可以根据和检验setter方法传入的参数是否合法,隐藏对象的内部结构
正确定义一个类
- 所有的属性私有化
- 每个属性都有对应的setter,getter方法(规矩,要遵守)
(1)setter方法
(2)getter方法
3、构造器
* 什么时候用构造器赋值?
* 看创建对象是为了干什么?
* 如果说创建对象仅仅是为了调用这个类的方法,建议使用无参构造器
* 如果说创建对象的时候需要使用到对象的某个属性,可以使用构造器赋值public class Ch01 { public static void main(String[] args) { // person是Person类的对象,是Person类的实例 Person person = new Person(); // 对象有什么功能? // 对象可以调属性,可以调方法 // 对象调用的属性和方法 person.name = "小明"; person.age = 20; // person.eat(); Car car = new Car(); car.brand = "奔驰"; car.color = "黑色"; // car.run(); // person.travel(car); // p2出生,就会有name,age,wife Wife wife = new Wife(); wife.name = "李四"; wife.age = 25; // p2一创建出来,所有的属性都会跟着初始化 Person p2 = new Person("张三",25,wife); // p3一创建出来,就只有name和age,没有wife Person p3 = new Person("王五",26); } }