一:面向对象学习内容:
1.java 类及成员:属性、方法、构造器、代码块、内部类
2.面向对象三大特征:封装、继承、多态
3.其他关键字:this、super static、final、abstact、interface 、package、import
二:类与对象:
类:是对一类事务的描述,是抽象的概念上的定义
对象:是实际存在的该类事务的每个个体,因而也称instance)
注:面向对象程序设计的重点是类的设计,设计类就是设计类的成员
三:面向对象思想落地的实现规则:
1.创建类,设计类的成员
2.创建类的对象
3.通过 对象.属性 和对象.方法,调用对象结构
四:类的组成及实例化:
类由属性(成员变量)和方法(成员函数)组成
例1:创建人的类,并实例化调用
class Person{
     String name;//属性1
     int age;//属性2
     //方法1
     public void eat() {
         System.out.println("人会吃饭!");
     }
     //方法2
     public void practise(String sports) {
         System.out.println("人会做"+sports+"运动!");
     }
     
 }
public class PersonDemo {
     public static void main(String[]args) {
 //对象实例化
 Person p1 =new Person();
 p1.name="tom";
 p1.age=18;
 System.out.println(p1.name);
 System.out.println(p1.age);
 p1.eat();
 p1.practise("basskeball");
}
 }
五:属性及局部变量的对比:
相同点:
1.1定义变量的格式: 数据类型 变量名=变量值;
1.2先声明,后使用
1.3 变量都有其对应的作用域
不同点:
1.1 在类的声明位置不一致:
属性直接定义在一对{}内,
局部变量:声明在方法内,方法形参,代码块内,构造器形参,构造器内部变量
1.2 关于权限修饰符不同:
属性:可以在声明属性时,指明其权限,使用权限修饰符修饰。
常用的权限修饰符:private public 缺省 protected
局部变量:不可以使用权限修饰符
1.3默认初始化值的情况:
属性:类的属性,根据其类型,都默认初始化值。
整型(byte short int long)0
浮点型(float double):0.0
字符型(char:0 或'\u0000')
布尔型(boolean:false)
引用数据类型(类、数组、接口:null)
局部变量:没默认初始化值。
意味着: 我们在调用局部变量前,一定要显示赋值
1.4 在内存中加载的位置:
属性:加载到堆空间中(非static)
局部变量:加载到栈空间
六:return 关键字:
1.使用范围:使用在方法体中
2.作用 1).结束方法
2)针对于返回值类型的方法,使用return 数据 方法返回所有的数据
注意点:return 关键字后面不可以声明执行语句
七:方法的重载:
在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同(和修饰符和返回值类型无关)
例:
int add(int x ,int b)
int add(int x,int y,int z)
double add(double a,double b)
八:权限修饰符:
java中的四种权限符:private 、缺省、protected、public

九:封装性:
软件设计 遵循高内聚、低耦合 ,隐藏具体实现细节,对外提供接口
类的封装性体现在 隐藏属性信息,通过方法 调用属性(实现关键字:private)
class Person{
     String name;//属性1
     int age;//属性2
     //方法1
     
     public String getName() {
         return name;
     }
     public void setName(String n) {
         name = n;
     }
     public int getAge() {
         return age;
     }
     public void setAge(int a) {
         age = a;
     }
十:构造器:
构造器(constuctor)的作用是创建对象
1.如果没有显示的定义类的构造器的话,则系统默认提供一个空参的构造器
2.定义构造器的格式:权限修饰符 类名(形参列表){}
3.一个类中定义的多个构造器,彼此构成重载
 class Person{
     String name;//属性1
     int age;//属性2
     public Person() {
         
     }
    public Person(String n) {
         this.name = n;
     }
    public Person(String n, int a) {
         this.name = n;
         this.age = a;
     }
十一:this关键字:
this 表示当前对象,可以调用属性、方法 和构造器,this(参数)调用构造函数,必须放在首行
 class Person{
     String name;//属性1
     int age;//属性2
     public Person(String name, int age) {
     
         this.name = name;
         this.age = age;
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public int getAge() {
         return age;
     }
     public void setAge(int age) {
         this.age = age;
     }
十二: 综合例题:实现 客户、账号、银行 关系
//账号类
 class Account{
     private double balance;
    public double getBalance() {
         return balance;
     }
    public void setBalance(double balance) {
         this.balance = balance;
     }
    public Account(double balance) {
         super();
         this.balance = balance;
     }
     
     //存钱
     public double deposit(double acct) {
         if(acct<0) {
             System.out.println("输入信息错误");
         
         }
          balance+=acct;
          System.out.println("存钱成功" +acct);
         return balance;
         
     }
     //取钱
     public double withdraw(double acct){
         if(acct>balance) {
             System.out.println("余额不足");
         
         }
         balance-=acct;
         System.out.println("取钱成功" +balance);
         return balance;
     }
//客户类
 class Customer{
     private String lastName;
     private String firstName;
     private Account acct;
     public Customer(String lastName, String firstName) {
         super();
         this.lastName = lastName;
         this.firstName = firstName;
         
     }
     public String getLastName() {
         return lastName;
     }
     public void setLastName(String lastName) {
         this.lastName = lastName;
     }
     public String getFirstName() {
         return firstName;
     }
     public void setFirstName(String firstName) {
         this.firstName = firstName;
     }
     public Account getAcct() {
         return acct;
     }
     public void setAcct(Account acct) {
         this.acct = acct;
     }
     
 }
 //银行类
 class Bank{
     private Customer[] customers;
     private int numberOfCustomer;
     public Bank() {
         customers =new Customer[10];
     }
     public void addCustomer(Customer cust) {
         customers[numberOfCustomer]=cust;
         numberOfCustomer++;
         
     }
     public Customer getCustomer(int index) {
         if(index>numberOfCustomer) {
         return null;
     }
     return customers[index];
     }
     
 }
//测试类
 public class ObjectTest {
     public static void main(String []args) {
         Bank bank =new Bank();
         Customer cust =new Customer("jhone","smith");
         bank.addCustomer(cust);
         bank.getCustomer(0).setAcct(new Account(2000));
         bank.getCustomer(0).getAcct().deposit(500);
         System.out.println(bank.getCustomer(0).getAcct().getBalance());
}
}


















