1. 面向对象的概念
-
面向对象:封装
-类内部行为自己控制,别人无法干涉
本身方法等 自身决定 -
面向对象:继承
子类复用父类的描述信息和行为
父类/基类:哺乳动物类
子类/派生类:人类 -
面向对象:多态
哺乳动物类:人类、马类
人类和马类 鸣叫行为不一样,称为多态
2.定义类
- 方法、变量小写开头。 类大写开头
- 成员变量是:private; 成员方法是:public ; 不要加static
public class Person {
//成员变量 一般是private
private int age;
private String name;
// 成员方法 一般是public
//设置年龄
public void setAge(int value)
{
this.age=value;
}
//设置名字
public void setName(String value)
{
this.name=value;
}
//读取名字+年龄
public void sayHello()
{
System.out.println("我的名字是"+this.name+",我的年龄是"+this.age);
}
}
3.对象的创建和调用方法
定义类的变量,指向初始化的对象,调用方法
public class Main {
public static void main(String[] args) {
// 定义变量p 指向一个初始化对象
Person p=new Person();
//调用成员变量和成员方法
p.setAge(30);
p.setName("小伟");
p.sayHello();
}
}
4.对象之间是相互独立的
相同类的对象之间 或者不同类的对象之间都是相互独立的
public static void main(String[] args) {
// 定义变量p 指向一个初始化对象
Person p=new Person();
//调用成员变量和成员方法
p.setAge(30);
p.setName("小伟");
p.sayHello();
//定义新对象。p和p1 这两个变量指向的对象互不影响
Person p1=new Person();
p1.setAge(33);
p1.setName("林志颖");
p1.sayHello();
//重新调用p指向的对象的方法
p.sayHello();
5.通俗方法讲变量和对象
1个变量只能指向一个对象
如果变量指向对象变了,那么之前所指向对象的关系删除
public class Main {
public static void main(String[] args) {
// 定义变量p 指向一个初始化对象
Person p=new Person();
//调用成员变量和成员方法
p.setAge(30);
p.setName("小伟");
p.sayHello();
//定义新对象。p和p1 这两个变量指向的对象互不影响
Person p1=new Person();
p1.setAge(33);
p1.setName("林志颖");
p1.sayHello();
// p2 指向 p1变量所指向的对象
Person p2=p1;
p2.setAge(66);
p2.setName("周润发");
p2.sayHello();
p1.sayHello();
}
}
6 给方法传变量
传递给方法的参数变量本身是拷贝。
public class Main {
public static void main(String[] args) {
// 定义变量p 指向一个初始化对象
Person xiaowei=new Person();
//调用成员变量和成员方法
xiaowei.setAge(30);
xiaowei.setName("小伟");
xiaowei.sayHello();
//调用方法,改变变量的值
test(xiaowei);
xiaowei.sayHello();
}
// 定义一个方法,注意是要加static
static void test(Person p)
{
p=new Person();
p.setAge(888);
}
}
7成员变量和局部变量
必须初始化,对象初始化为null
NullPointerException --空指针
8 深入理解this
- Person 类
package com.test;
public class Person {
private int age;
private String name;
private int height;
private String gender;
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return this.age;
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return this.name;
}
public void setHeight(int height)
{
this.height=height;
}
public int getHeight()
{
return this.height;
}
public void setGender(String gender)
{
this.gender=gender;
}
public String getGender()
{
return this.gender;
}
public void sayHello()
{
System.out.println("my name is "+this.name+",我的年龄是"+this.age+",我的身高是"+this.height+",我的性别是"+this.gender);
}
public boolean isSamePeople(Person p)
{
return this.age==p.age&&this.name.equals(p.name)
&& this.height==p.height &&this.gender.equals(p.gender);
}
}
- main函数
package com.test;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1=new Person();
p1.setAge(18);
p1.setGender("girl");
p1.setHeight(175);
p1.setName("xiaowei");
p1.sayHello();
Person p2=new Person();
p2.setAge(18);
p2.setGender("girl");
p2.setHeight(175);
p2.setName("xiaowei");
p2.sayHello();
Person p3=new Person();
p3.setAge(38);
p3.setGender("boy");
p3.setHeight(159);
p3.setName("zhangsan");
p3.sayHello();
System.out.println(p1.isSamePeople(p2));
System.out.println(p2.isSamePeople(p3));
}
}
9 private 和public
类中 成员变量一般用private 成员方法是public
成员变量的值设定或者取得一般用 set 和get public方法