一、java面向对象(oop)学习的三条主线
1.java类及类的成员:属性、方法、构造器;代码块、内部块
2.面向对象的三大特征:封装性、继承性、多态性、(抽象性)
3.其他关键字:this、super、static、final、abstract。。。
二、设计类,其实就是设计类的成员
属性 = 成员变量 = field = 域、字段
方法 = 成员方法 = 函数 = method
创建类的对象 = 类的实例化 = 实例化类
public class object_demo_01 {
public static void main(String[] args){
//创建person类对象
Person p1 = new Person();
//调用对象的结构:属性、方法
//调用属性:”对象.属性“
p1.name = "Tom";
p1.isMale = true;
System.out.println(p1.name);
//调用方法:“对象.方法”
p1.eat();
p1.sleep();
p1.talk("Chinese");
Person p2 = new Person();
System.out.println(p2.name); //null
System.out.println(p2.isMale); //false
//p1和p3只想同一对象实体
Person p3 = p1;
System.out.println(p3.name); //Tom
p3.age = 10;
System.out.println(p1.age); //10
}
}
class Person{
//属性
String name;
int age;
boolean isMale;
//行为
public void eat(){
System.out.println("eat food");
}
public void sleep(){
System.out.println("sleep ");
}
public void talk(String language){
System.out.println("say " + language);
}
}
类中属性的使用
属性(成员变量) vs 局部变量
1.相同点:
定义变量的格式:数据类型 变量名 = 变量值
先声明,后使用
变量都有其作用域
2.不同点:
(1)在类中声明的位置不同
属性:直接在类的一对{}内
局部变量:声明的方法内、方法形参、代码块内、构造器形参
(2)关于权限修饰符不同
属性:可以在声明属性时,指明其权限,使用权限修饰符
常用的权限修饰符:private、public、缺省(默认)、protected
局部变量:不可使用权限修饰符
(3)默认初始值得情况:
属性:类的属性,根据其类型,都有默认初始值
整型(byte、short、int、long):0
浮点型(float、double):0.0
字符型(char):0
布尔型(boolean):false
局部变量:
没有初始值
在调用局部变量是,一定要先赋值
形参在调用时,赋值即可
(4)在内存中加载位置不一样
属性:加载到对空间
局部变量:栈空间
public class object_demo_02 {
public static void main(String[] args){
User u1 = new User();
System.out.println(u1.name); //null
u1.talk("中文");
}
}
class User{
//属性(成员变量)
String name;
int age;
boolean isMale;
public void talk(String language){//language形参
System.out.println("我们使用" + language + "进行交流");
}
public void eat(){
String food = "烙饼"; //局部变量
System.out.println(food);
}
}
类中方法的声明和使用
方法:描述方法应该具有的功能
比如:Math类:sqrt()
1.举例
void 没有返回值
String 返回String
public void eat()
public void sleep(int hour)
public String getName()
public String getNation(String nation)
2.方法的声明:权限修饰符 返回值类型 方法名(形参列表)
public class object_demo_03 {
}
//客户类
class Customer{
//属性
String name;
int age;
boolean isMale;
//方法
public void eat(){
System.out.println("吃饭");
}
public void sleep(int hour){
System.out.println("休息了" + hour + "个小时");
}
public String getName(){
return name;
}
public String getNation(String nation){
String info = "我的国籍是:" + nation;
return info;
}
}