JAVA---面向对象

类和对象

类是对事物的一种描述,对象则为具体存在的事物

类---由属性和行为(方法)组成

类的属性---在类中通过成员变量来体现

类的行为---在类中通过成员方法来体现

类的定义步骤:1.定义类      2.编写类的成员变量      3.编写类的成员方法

public class 类名{

        //成员变量

        变量1的数据类型    变量1;

        变量2的数据类型    变量2;

        //成员方法

        方法1;

        方法2;

}

定义类的注意事项

1.类名首字母建议大写,需要见名知意。

2.一个Java文件中可以定义多个class类,且只能有一个类是public修饰,而且public修饰的类名必须为代码文件名。一般一个文件定义一个类。

3.成员变量的完整定义格式:修饰符  数据类型  变量名称  = 初始化值; 一般无需指定初始化值,存在默认值。

javabean类--不写main方法

用来描述一类事物的类

如何设计javabean类:

根据需求,看需求中有哪几类事物,每个事物都要对应一个类,这类事物的名词都可以定义为属性,这类事物的动词都可定义为行为(方法)。

javabean类的注意事项

1.类名需要见名知意

2.成员变量都使用private修饰

3.提供至少两个构造方法------>无参与有参

4.成员方法---->提供每个成员变量对应的setXxx()和GetXxx(),除此以外其他需求也要写

public class User {
    //属性
    private String username;
    private String password;
    private String email;
    private String gender;
    private int age;
    //空参构造
    public User(){

    }
    //带参数构造方法
    public User(String username,String password,String email,String gender,int age){
        this.username = username;
        this.password = password;
        this.email = email;
        this.gender = gender;
        this.age = age;
    }
    //快捷键是  alt +insert  alt + fn + insert
    public void setUsername(String username){
        this.username = username;
    }
    public String getUsername(String username){
        return username;
    }
    
    public void setPassword(String password){
        this.password = password;
    }
    public String getPassword(String usernameusername){
        return password;
    }

    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }

    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    

测试类---写main方法的类

我们可以在测试类中创建Javabean类的对象,进行赋值调用。

对象的使用

创建对象的格式:      类名    对象名   =  new   类名();

调用成员的格式:      对象名.成员变量                         对象名.成员方法();

public class Phone {
    //定义成员属性
    String brand;
    double price;
    //成员方法,请注意成员方法定义时没有static
    public void call (){
        System.out.println("手机在打电话");
    }
    public void playGame(){
        System.out.println("手机在玩游戏");
    }
}
public class PhoneTest {
    /*根据类。定义对象,并调用成员*/
    public static void main(String[] args) {
        //创建手机类的对象
        phone p = new phone();
        //给对象p的成员变量赋值
        p.brand = "小米";
        p.price = 1999.98;
        System.out.println(p.brand);
        System.out.println(p.price);
        //调用成员方法
        p.call();
        p.playGame();
    }
}

面向对象的三大特征

封装

对象代表什么,就要封装对应的数据,并提供数据对应的行为

封装的好处:正确地设计对象的属性和方法、降低学习成本

private关键字

private是一个权限修饰符,用来修饰成员(成员变量和成员方法),被private修饰的成员只能在本类中才能访问。

为什么会出现私有化的成员变量------>防止该成员变量在其他类中被赋值为不合理的值。

对于每一个私有化的成员变量------>都要提供get和set方法。

set方法:是给成员变量赋值;

get方法:对外提供成员变量的值。

public class BoyFriend {
    //成员属性
    private String name;
    private int age;
    /*对于每一个私有化的成员变量------>都要提供get和set方法。
    set方法:是给成员变量赋值;
    get方法:对外提供成员变量的值。
     */
    //给私有成员变量name进行赋值
    public void setName(String hisName){
       name = hisName;
    }
    public String getName(){
        return name;
    }
    //给私有成员变量age进行赋值
    public void setAge(int hisAge){
        if (hisAge>=18&&hisAge<=30){
            age = hisAge;
        }else {
            System.out.println("非法参数");
        }
    }
    public int getAge(){
        return age;
    }
}
public class BoyFriendTest {
    public static void main(String[] args) {
        BoyFriend boy1 = new BoyFriend();
        boy1.setName("沈星回");
        boy1.setAge(24);
    }
}

继承

多态

就近原则---局部变量与成员变量重名时

在一个类中,方法以外的变量,称为成员变量;方法以内的变量,称为局部变量

当局部变量与成员变量重名时,采取就近原则------>谁离我近,我用谁

当需要使用成员变量时,可以在变量前面加上   this.

public class BoyFriend {
    //成员属性
    private String name;
    private int age;
    /*对于每一个私有化的成员变量------>都要提供get和set方法。
    set方法:是给成员变量赋值;
    get方法:对外提供成员变量的值。
     */
    //给私有成员变量name进行赋值
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    //给私有成员变量age进行赋值
    public void setAge(int age){
        if (age>=18&&age<=30){
            this.age = age;
        }else {
            System.out.println("非法参数");
        }
    }
    public int getAge(){
        return age;
    }
}
public class BoyFriendTest {
    public static void main(String[] args) {
        BoyFriend boy1 = new BoyFriend();
        boy1.setName("沈星回");
        boy1.setAge(24);
        System.out.println("我的一号男朋友是"+boy1.getName());
        System.out.println("我的一号男朋友的年龄是"+boy1.getAge());
    }
}

构造方法

创建对象的时候给,虚拟机会自动调用构造方法,作用是给成员变量进行初始化赋值。

构造方法的格式

public class Student{

        修饰符   类名(参数){

                方法体;

        }

}

特点:

方法名要与类名完全一致,大小写也要完全一致。

没有返回值类型,连void也没有,同时也没有具体的返回值(不能由return带回结果数据)

构造方法不需要我们手动调用,在创建对象时由虚拟机调用,每创建一次对象,就会调用一次构造方法。

如果我们没有写任何的构造方法,那么虚拟机  会  给我们加一个空参构造方法。


    //无参构造   一般情况下,无参构造也要存在,因为有时我们可能无法确定该对象的参数的具体取值
    public BoyFriend(){
        
    }
    //有参构造方法
    public BoyFriend(String name,int age){
        this.name = name;
        this.age = age;
    }

注意事项:

1.如果没有定义构造方法,系统将会给出一个默认的无参数构造方法

2.如果定义了构造方法,系统将不再提供默认构造方法

3.带参构造方法,和无参构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载。

4.不管什么情况下,我们都需要手动书写无参构造和有参构造。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值