目录
一、从现实世界抽象出类:
1、如何在计算机中描述他们?
(1)找出它的种类
(2)找出它的属性
(3)找出它的行为
例如:
2、练习
(1)狗狗类
/**
* 狗狗类
*/
public class Dog {
public String name="旺财";//昵称
public int health=100;//健康值
public int love=100;//与主人的亲密度
public String stain="拉不拉多";
public void run(){
System.out.println("跑呀跑");
}
public void print(){
System.out.println("我的名字是:"+name+"\t健康值为:"+health+"\t与主人的亲密程度为:"+love+"\t我的品种是:"+stain);
}
}
(2)企鹅类
/**
* 企鹅类
*/
public class Penguin {
public String name="楠楠";//昵称
public int health=100;//健康值
public int love=100;//与主人的亲密度
public String sex;
public void print(){
System.out.println("我的名字是:"+name+"\t健康值为:"+health+"\t与主人的亲密程度为:"+love+"\t我的性别是:"+sex);
}
}
(3)测试类
import java.util.Scanner;
/**
* 测试类
*/
public class Test {
public static void main(String[] args) {
Penguin penguin=new Penguin();
System.out.println("欢迎来到宠物商店!");
Scanner sc=new Scanner(System.in);
System.out.println("请输入要领养宠物的名字:");
String name=sc.next();
System.out.println("请选择要领养的宠物类型,(1、狗狗 2、企鹅)");
int type=sc.nextInt();
Dog dog=new Dog();
dog.name=name;
System.out.println("宠物的自白:");
if(type==1){
dog.print();
}else if(type==2){
System.out.println("请选择企鹅的性别:(1、Q仔 2、Q妹)");
int sex=sc.nextInt();
if(sex==1){
penguin.sex="Q仔";
}else if(sex==2){
penguin.sex="Q妹";
}
penguin.print();
}
}
}
二、类图:
三、构造方法:
1、构造方法的属性
(1)构造方法没有返回值
(2)构造方法名 必须与类名相同
(3)构造方法不能像普通方法那样被调用 构造方法在new对象时被调用
(4)如果没有创建构造方法 系统默认给我们一个不带参数的构造方法
(5)如果已经创建了构造方法 系统就不会再给我们创建无参数的构造方法
(6)一般可以通过构造方法赋值
四、方法重载:
1、方法重载
(1)普通方法和构造方法都可以重载
(2)与返回值无关 因为:普通方法有返回值 ,构造方法没有返回值
(3)方法名必须相同 才能重载
(4)与修饰符无关 例如:一个方法是public 一个是protected
(5)参数列表个数不同 或者参数类型不同 与变量名没有任何关系
(6)案例开发一个需求工程,就要查一个数据,有时候没有传值,有时候传一个值,有时候传多个值。
五、静态修饰符:
(1)静态代码在类加载之前被调用 static属于类
(2)本类中的普通方法可以调用静态属性和非静态属性。
(3)静态方法中,只能访问静态修饰的属性,不能访问非静态修饰的属性。
(4)不管是普通方法还是静态方法都可以定义普通属性(非static修饰的属性),不可以定义static修饰的属性。因为:static属于类
(5)静态方法不能使用this和super
六、封装:
1、封装的概念
将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
2、封装的好处
(1)只能通过规定方法访问数据
(2)方便加入控制语句
(3)方便修改实现
(4)隐藏类的实现细节
3、封装的步骤
(1)修改属性的可见性 设为private
(2)创建共有的getter/setter方法 用于属性的读写
(3)在getter/setter方法中加入属性的控制语句 对属性的合法性进行判断