java学习笔记day5
面向对象(上)
一、java面向对象学习的三条主线
1.java类和其成员的属性 方法 构造器 代码块 内部类
2.面向对象的三大特征 封装性 继承性 多态性(抽象性)
3.其关键字, this super static final abstract interface pakage import
package oop;
public class TEST {
public static void main(String[] args) {
Person p1 = new Person();
//调用对象的结构,属性 方法
p1.name = "Tom";
p1.ismale = true;
System.out.println(p1.name);
p1.eat();
p1.sleep();
p1.talk("Chinese");
}
}
//类和对象的使用
class Person {
//属性 =成员变量 = field = 域、字段
String name;
int age = 1;
boolean ismale;
//方法=成员方法=函数=method
public void eat() {
System.out.println("吃");
}
public void sleep() {
System.out.println("睡");
}
public void talk(String language) {
System.out.println("说,用:" + language);
}
}
//当多个对象时,每个对象有相应的属于和方法都是独立的
内存解析
类中属性的使用
package oop;
/*
类中属性的使用
属性 VS 局部变量
1.相同点:
1.1定义变量的格式,数据类型 变量名 = 变量值
1.2光声明,后使用
1.3变量都有相应的作用域
2.不同点
2.1在类中声明
属性:直接在定义在{}内
局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内的变量
2.2关于权限修饰符的不同
属性:可以在声明变量时指名权限修饰符pri pub pro
局部变量:不可以权限修饰符
2.3默认初始化值的情况
属性:类的属性,根据其类型,都有默认初始化。
整型=0
浮点型=0.0
char=0
布尔型=fakse
引用数据类型(类、数组、接口)null
局部变量:没有初始化 一定要显式赋值
形参在调用时赋值即可
2.4内存中加载的位置不同
属性:加载在堆空间中
局部:栈空间
*/
public class UserTest {
public static void main(String[] args) {
User u1 =new User();
System.out.println(u1.name);
System.out.println(u1.age);
System.out.println(u1.ismale);
u1.takl("日语");
}
}
class User{
//属性(成员变量)
String name;
int age;
boolean ismale;
public void takl(String language){//language形参
System.out.println("说:"+ language + "交流");
}
public void eat(){
String food = "大米";//局部变量
System.out.println("吃" + food);
}
}