文章目录
一、介绍
- 面向:拿、找。
- 对象:能干活的东西。
- 面向对象编程:拿东西过来做对应的事情。
例子:
二、设计对象并使用
1.类和对象
- 类(设计图):是对象共同特征的描述;
- 对象:是真实存在的具体东西。
在java中,必须先设计类,才能获得对象
public static phone{
}
2.如何定义类
public static 类名{
1.成员变量(代表属性,一般是名词)
2.成员方法(代表行为,一般是动词)
3.构造器
4.代码块
5.内部类
}
示范
public class Phone {
//属性(成员变量)
String ming;
double dianLiang;
//行为(方法)
public void dianHua () {
}
public void playGame () {
}
}
3.如何得到类
类名 对象名 = new 类名();
例
Phone p = new Phone();
示范:
1.创建一个类
public class Phone {
//属性(成员变量)
String ming;
double jiaGe;
//行为(方法)
public void dianHua () {
System.out.println("手机在打电话");
}
public void playGame () {
System.out.println("手机在玩游戏");
}
}
2.创建测试类
public class PhoneCeshi {
public static void main(String[] args) {
//创建手机的对象
Phone P = new Phone();
}
}
4.如何使用对象
- 访问属性:对象名.成员变量
- 访问行为:对象名.方法名(…)
示范:
public class PhoneCeshi {
public static void main(String[] args) {
//创建手机的对象
Phone P = new Phone();
//给手机赋值
P.ming = "vivo";
P.jiaGe = 1999.98;
//获取手机对象中的值
System.out.println(P.ming);
System.out.println(P.jiaGe);
//调用手机中的方法
P.dianHua();
P.playGame();
Phone P2 = new Phone();
P2.ming = "苹果";
P2.jiaGe = 15599;
System.out.println(P2.ming);
System.out.println(P2.jiaGe);
P2.dianHua();
P2.playGame();
}
}
5.注意事项
- 用来描述一类事物的类,专业叫作:
Javabean类
在javabean类中,是不写main方法的。 - 在以前,编写main方法的类,叫作
测试类
我们可以在测试类中创建javabean类的对象并进行赋值调用。
- 一个java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。
实际开发中建议还是一个文件定义一个class类
- 成员变量的完整定义格式是:
修饰符 数据类型 变量名称 = 初始化值;
一般无指定初始化值,存在默认值。
6.对象的成员变量的默认值规则
7.示范(女朋友类)
编写女朋友类,创建女朋友类的对象
给女朋友的属性赋值并调用女朋友类中的方法。
public class nPy {
//属性
String name;
String shengRe;
//行为
public void jinRanzhiye(){
System.out.println("消耗三点鬼火,释放烬燃之夜");
}
}
public class nPyceshi {
public static void main(String[] args) {
//创建对象(女朋友)
nPy n = new nPy();
//给女朋友赋值
n.name = "不知火";
n.shengRe = "5.10";
//获取女朋友的值
System.out.println(n.name);
System.out.println(n.shengRe);
//调用女朋友的方法
n.jinRanzhiye();
}
}
三、开发中类的设计
public class Student {
String id;
String name;
char gender;
int age;
String schoolName;
public boolean checkID(){
......
}
}
四、封装
告诉我们,如何正确设计对象的属性和方法
对象代表什么,就得封装对应的数据,并提供数据对应的行为。
需求:定义一个类描述人
属性:姓名,年龄
行为:吃饭,睡觉
示范(不用封装):
public class dyir {
String name;
int age;
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
}
例一(人画圆):
需求:人画圆,请针对这个需求进行面向对象设计
public class rengYuan {
double banJin;
public void huaYuan(){
System.out.println("根据半径" + banJin + "画一个圆");
}
}
例二(人关门):
public class closeDoor {
boolean flag = true; //门的状态数据
public void open(){
...//开门,修改门的状态
}
public void close(){
...//关门,修改门的状态
}
}
1.private关键词
- 是一个权限修饰符
- 可以修饰成员(成员变量和成员方法)
- 被
private
修饰的成员只能在本类中才能访问
如:(不安全)
public class anquan {
String name;
int age;
String ggender;
}
如何安全:(加private
)
public class anquan {
private String name;
private int age;
private String ggender;
}
标准代码
public class pri {
private int age;//外部不能直接访问 age
//set(赋值)
public void setAge(int a){
if(a>=18&&a<=50){
age = a;
}else{
System.out.println("非法数据");
}
}
//get(获取)
public int getAge() {
return age;
}
}
测试
1、输入非法数据
public class priceshi {
public static void main(String[] args) {
pri cesi1 = new pri();
cesi1.setAge(5);
int i = cesi1.getAge();
System.out.println(i);
}
}
2、输入合法数据
public class priceshi {
public static void main(String[] args) {
pri cesi1 = new pri();
cesi1.setAge(19);
int i = cesi1.getAge();
System.out.println(i);
}
}
总结:
针对于每一个私有化的成员变量,都要提供get和set方法
set方法
:给成员变量赋值
get方法
:对外提供成员变量的值
五、就近原则和this关键字
1.就近原则
System.out.println(age); System.out.println(this.age);
2.this的作用
可以区分成员变量和局部变量。
重名时
加了this
关键字,就代表全局变量.
不加就取最近的变量。
六、构造方法
构造方法也叫构造器,构造函数
作用
:在创建对象的时候给成员变量进行初始化的。
如:
pri cesi1 = new pri();
表示调用空参的构造方法
构造方法的格式
public class pri{
修饰符 类名(参数){
方法体;
}
}
特点:
1.方法名与类名相同,大小写也要一致
2.没有返回值类型,连void都没有
3.没有具体的返回值( 不能由 return 带回结果数据)
执行时机:
1.创建对象的时候由虚拟机调用,不能手动调用构造方法
2.每创建一次对象,就会调用一次构造方法
七、标准的JavaBean类
1.类名需要见名之意。
2.成员变量使用private
修饰。
3.提供至少两个构造方法
- 无参构造方法
- 带全部参数的构造方法
4.成员方法
- 提供每一个成员变量对应的
setXxx()/getXxx()
- 如果还有其他行为,也需要写上
例:
public class pri {
private int age;
public pri() {
}
public pri(int age) {
this.age = age;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
//还有to......的
}