java面向对象
1. 类和对象
1.1 类和对象的理解
客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。
- 类
- 类的理解
- 类是对现实生活中一类具有共同属性和行为的事物的抽象
- 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
- 简单理解:类就是对现实事物的一种描述
- 类的组成
- 属性:指事物的特征,例如:手机事物(品牌,价格,尺寸)
- 行为:指事物能执行的操作,例如:手机事物(打电话,发短信)
- 类的理解
- 类和对象的关系
- 类:类是对现实生活中一类具有共同属性和行为的事物的抽象
- 对象:是能够看得到摸的着的真实存在的实体
- 简单理解:类是对事物的一种描述,对象则为具体存在的事物
1.2 类的定义
类的组成是由属性和行为两部分组成
- 属性:在类中通过成员变量来体现(类中方法外的变量)
- 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
类的定义步骤:
①定义类
②编写类的成员变量
③编写类的成员方法
学生:
属性:学号,姓名,年龄
行为:吃饭,睡觉
//在一个java文件中,可以写多个class类,但是只能由一个类被public修饰而且这个类贺java文件名保持一致
public class 类名 {
// 成员变量:类中方法外定义,表示一个类的属性 id, name, age
int id;
String name;
int age;
变量1的数据类型 变量1;
变量2的数据类型 变量2;
…
// 成员方法:表示一个类的行为 eat() sleeep()
public void eat(){
System.out.println("吃饭")
}
public void sleep(){
System.out.println("睡觉")
}
方法1;
方法2;
}
//如何通过一个类创建一个类的对象
//语句定义格式:类名 对象名 = new 类名();
//数据类型 变量名 = 初始值;
Student s1 = new Student();
System.out.println(s1);
//获取成员变量
//对象名。成员变量名
int i = s1.id;
System.out.println(i);
System.out.println(s1.name);
System.out.println(s1.age);
System.out.println("=========================");
//给对象成员变量赋值
s1.id = 1001;
s1.name = "杨浩东";
s1.age = 18;
System.out.println(s1.id);
System.out.println(s1.name);
System.out.println(s1.age);
对象
1.概述:一类事物的具体体现
2.使用:
a.导包: import 包名.类名
如果两个类在同一个包下,想要使用对方的成员不需要导包
如果两个类不在同一个包下,想要使用对方的成员需要导包
特殊包:java.lang -> 使用lang包下的类不需要导包 -> String
友情提示:在学四种权限修饰符之前,尽量让两个类在同一个包下
b.创建对象:想要使用哪个类中的成员,就new哪个类的对象
类名 对象名 = new 类名() -> 比如: Person person = new Person()
c.调用成员(成员变量,成员方法) -> 想要使用哪个类中的成员,就用哪个类的对象去点哪个成员
对象名.成员变量名 = 值
对象名.方法名() -> 调用的是无参无返回值方法
对象名.方法名(实参) -> 调用的是有参无返回值方法
数据类型 变量名 = 对象名.方法名() -> 调用的是无参有返回值方法
数据类型 变量名 = 对象名.方法名(实参) -> 调用的是有参有返回值方法
public class Person {
//属性-> 成员变量
String name;
int age;
//行为 -> 成员方法
public void eat(){
System.out.println("吃饭");
}
public void drink(){
System.out.println("喝水");
}
}
public class Demo01Person {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);
System.out.println(person.age);
person.name = "杨浩东";
person.age = 22;
System.out.println(person.name);
System.out.println(person.age);
person.eat();
person.drink();
}
}
对象创建和使用示意图
成员变量和局部变量的区别
1.定义位置不同(重点)
a.成员变量:类中方法外
b.局部变量:定义在方法之中或者参数位置
2.初始化值不同(重点)
a.成员变量:有默认值的,所以不用先手动赋值,就可以直接使用
b.局部变量:是没有默认值的,所以需要先手动赋值,再使用
3.作用范围不同(重点)
a.成员变量:作用于整个类
b.局部变量:只作用于自己所在的方法,其他方法使用不了
4.内存位置不同(了解)
a.成员变量:在堆中,跟着对象走
b.局部变量:在栈中,跟着方法走
5.生命周期不同(了解)
a.成员变量:随着对象的创建而产生,随着对象的消失而消失
b.局部变量:随着方法的调用而产生,随着方法的调用完毕而消失
public class Person {
String name;//成员变量
public void eat(){
int i = 10;//局部变量
System.out.println(i);
System.out.println(name);//成员变量不用手动赋值可以直接使用,因为有默认值
}
public void drink(){
int j;
//System.out.println(j);//局部变量没有默认值,所以需要手动赋值再使用
System.out.println(name);
//System.out.println(i);//i是eat方法的局部变量,在drink中使用不了
}
}
例子:
需求:定义一个类MyDate,属性有 year month day
再定义一个类Citizen(公民类),属性有 name(String类型) birthday(MyDate类型) idCard(String),为这三个属性赋值,然后将值取出来
public class MyDate {
int year;
int month;
int day;
}
public class Citizen {
//姓名
String name; //默认值 null
/*
生日 MyDate类型
MyDate属于自定义类型(引用数据类型)
这种类型要操作之前必须要赋值
怎么赋值? 需要new对象赋值
*/
MyDate birthday = new MyDate(); // 默认值 null
//身份证
String idCard; //默认值null
}
public class Test01 {
public static void main(String[] args) {
Citizen citizen = new Citizen();
citizen.name = "涛哥";
citizen.idCard = "111111111";
/*
citizen.birthday获取的是MyDate对象
再去点year获取的是MyDate对象中的year
链式调用
*/
citizen.birthday.year = 2000;
citizen.birthday.month = 10;
citizen.birthday.day = 10;
System.out.println(citizen.name+","+citizen.birthday.year+","+citizen.idCard);
}
}
标签:java,name,对象,System,面向对象,println,public,out From: https://www.cnblogs.com/03270925yhd/p/18673669给引用数据类型赋值,需要new对象(String比较特殊,可以直接=赋值)