java06-面向对象1

一:面向对象学习内容:

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

java06-面向对象1_第1张图片

  

         九:封装性:

软件设计 遵循高内聚、低耦合 ,隐藏具体实现细节,对外提供接口

类的封装性体现在 隐藏属性信息,通过方法 调用属性(实现关键字: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());

    }

}

你可能感兴趣的:(java,java,开发语言)