面向对象关键
- 面向对象 相对于 面向过程(一步一步)
- 类: 类是对象的模板
- 对象: 对象是类的一个实例
- 类: 一组相关属性(静态)和行为(动态)的集合
创建一个Student类
public class Student {
// 属性
String name = "张三";
int age = 18;
double score = 0.0;
// 行为==方法
public void study(){
System.out.println("good good study day day up");
}
public void eat(){
System.out.println("eat");
}
}
测试类
package com.myc.day02;
public class TestStudent {
public static void main(String[] args) {
// 使用类
// 类名 对象名 = new 类名();
// 实例化一个对象student1
Student student1 = new Student();
// 访问属性
System.out.println(student1.name);
// 修改属性
student1.name = "李四";
System.out.println(student1.name);
// 调用方法
student1.study();
student1.eat();
Student student2 = new Student();
student2.name = "王五";
System.out.println(student2.name);
}
}
成员变量(属性)的默认值
编写手机类
package com.myc.day02;
public class Phone {
String brand;
int stock;
char a;
float price;
boolean upOrDown;
String[] peiJian;
public void callSomeOne(String name){
System.out.println("正在和"+name+"通话中");
}
public void show(){
System.out.println("String brand = "+brand); // null
System.out.println("int stock = "+ stock); // 0
System.out.println("char a = "+a); // '\0000'
System.out.println("float price = "+price); // 0.0
System.out.println("boolean upOrDown = "+ upOrDown); // false
System.out.println("String[] peiJian = "+ peiJian); // null
}
}
测试
package com.myc.day02;
public class TestPhone {
public static void main(String[] args) {
Phone phone1 = new Phone();
phone1.show();
phone1.callSomeOne("Eric");
}
}

成员变量和局部变量的区别

在类中位置不同
- 成员变量: 类中, 方法外
- 局部变量: 方法中或者方法声明上(形式参数)
作用范围不同
- 成员变量: 类中
- 局部变量: 方法中
初始化值不同
- 成员变量: 可以有默认值
- 局部变量: 没有默认值, 必须先定义, 赋值才能使用
面向对象三大特性
- 继承
- 多态
- 封装
封装
1 使用private修饰成员变量
2 为成员变量提供公有的get, set 方法
package com.myc.day02;
public class Cat {
private String name;
private String type;
private int age;
// get 是返回成员变量值的方法
public String getName(){
return name;
}
// set 是修改成员变量值的方法
// 不符合见名知义
// public void setName(String new_name){
// name = new_name;
// }
// this 代表当前类对象
public void setName(String name){
this.name = name;
}
}
测试
package com.myc.day02;
public class TestCat {
public static void main(String[] args) {
Cat c1 = new Cat();
// String name = c1.name;
System.out.println(c1.getName());
c1.setName("花卷");
System.out.println(c1.getName());
System.out.println("++++++++++++++");
Cat c2 = new Cat();
c2.setName("馒头");
System.out.println(c2.getName());
}
}

示例2
package com.myc.day02;
public class ComputerProgram {
private String name;
private String function;
private int popular;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFunction() {
return function;
}
public void setFunction(String function) {
this.function = function;
}
public int getPopular() {
return popular;
}
public void setPopular(int popular) {
this.popular = popular;
}
}
测试
package com.myc.day02;
public class TestComputerProgram {
public static void main(String[] args) {
ComputerProgram cp1 = new ComputerProgram();
cp1.setName("Python");
ComputerProgram cp2 = new ComputerProgram();
cp2.setName("Java");
System.out.println(cp1.getName());
System.out.println(cp2.getName());
}
}
构造方法
与类名相同, 它没有返回值, 不需要返回值类型, 也不需要void
package com.myc.day02;
public class Dog {
private String name;
private String type;
private int age;
// 构造方法==构造器==构造函数
// 作用: 初始化的类中的成员变量
// public 类名(参数列表){
//
// }
// 空参构造方法
public Dog(){
System.out.println("空参构造方法被调用");
}
// 有参构造方法
public Dog(String name){
System.out.println("构造方法被调用");
this.name = name;
}
public Dog(String name, String type, int age){
this.name = name;
this.type = type;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void show(){
System.out.println(this.name + this.type + this.age);
}
}
测试
package com.myc.day02;
public class TestDog {
public static void main(String[] args) {
Dog dog1 = new Dog("花卷");
System.out.println(dog1.getName());
dog1.setName("haha");
System.out.println(dog1.getName());
Dog dog2 = new Dog("排骨");
System.out.println(dog2.getName());
new Dog();
Dog dog4 = new Dog("xixi", "柯基", 2);
dog4.show();
}
}

注意事项
- 如果你不提供构造方法, 系统默认提供无参构造方法
- 如果你提供了构造方法, , 系统不会提供无参构造方法
- 构造方法可以重载overload
网友评论