java:面向对象

1.类和对象

(1)简介

  类(设计图):是对象共同特征的描述;

  对象:是真实存在的具体东西

说明:在Java中,必须先设计类,才能获得对象

(2)如何定义类

       public class 类名 {

            1.成员变量(代表属性,一般是名词)

            2.成员方法(代表行为,一般是动词)

            (3.构造器

               4.代码块

                5.内部类)

           }

(3)如何得到类和对象

       类名  对象名 = new 类名( );

(4)如何使用对象

     1.访问属性:对象名.成员变量

     2.访问行为:对象名.方法名(...)

(5)定义类的补充注意事项

   1.用来描述一类事物的类,专业叫做:Javabean类。在Javabean类中,是不写main方法的。

   2.在以前,编写main方法的类,叫做测试类。我们可以在测试类中创建javabean类的对象并进行赋值调用

   3.类名首字母建议大写,需要见名知意,满足驼峰模式,不能用关键字,满足标识符规定

   4.一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。实际开发中建议还是一个文件定义一个class类

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

2.封装

(1)作用

     封装就是告诉我们如何正确设计对象的属性和方法,对象代表什么,就得封装对应的数据,并提供数据对应的行为

(2)好处

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

      2.降低我们的学习成本,可以少学、少记,有需要可以去API文档找

(3)private关键字

      private是一个权限修饰符,可以修饰成员(成员变量和成员方法),并且被privaye修饰的成员只能在本类中才能访问,在其他类中不可以使用,如果需要被其他类使用,提供相应的操作

(4)set方法

        提供 "setXxx(参数)” 方法,用于给成员变量赋值,方法用public修饰

(5)get方法

       提供 "getXxx()" 方法,用于获取成员变量的值,方法用public修饰

3.演示

(1)定义类

public class Friend {
    private String name;
    private int age;
    private String gender;
    public void setName(String n){
        name = n;
    }
    public String getName(){
        return name;
    }
    public void setAge(int a){
        if(a > 0 && a < 100){
            age = a;
        }
        else{
            System.out.println("非法参数");
        }
    }
    public int getAge(){
        return age;
    }
    public void setGender(String g){
        gender = g;
    }
    public String getGender(){
        return gender;
    }   
    public void sleep() {            //行为
        System.out.println("在睡觉");
    }
}

(2)使用对象

public class FriendText {
    public static void main(String[] args){
         Friend f = new Friend();    //得到类和对象
         f.setName("小明");          //访问属性
         f.setAge(20);
         f.setGender("男");
         System.out.println(f.getName());
         System.out.println(f.getAge());
         System.out.println(f.getGender());
         f.sleep();     //访问行为
    }
}

4.this关键字

(1)成员变量和局部变量

        局部变量:变量定义在方法里

        成员变量:方法定义在方法外面类的里面

(2)this关键字的用法

        当成员变量和局部变量相同时,可以区分局部变量和成员变量

public class Friend {
    private String name;
    private int age;
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
            age = age;
    }
    public int getAge(){
        return age;
    }
}
public class FriendText {
    public static void main(String[] args){
         Friend f = new Friend();
         f.setName("小明");
         f.setAge(20);
         System.out.println(f.getName());
         System.out.println(f.getAge());
    }
}
//运行结果:小明        运用了this关键字
//          0          没运用this关键字

5.构造方法

(1)概述和作用

       概述:构造方法也叫构造器、构造函数

       作用:在创建对象的时候给成员变量进行赋值的

(2)格式

      public class Student {

           修饰符 类名(参数){

                        方法体;

           }

       }

(3)种类和作用

        1.无参构造方法:初始化对象时,成员变量的数据均采用默认值

        2.有参数的构造方法:在初始化对象时,同时可以为对象进行赋值

(4)说明:

          1.方法名与类名相同,大小也要一致

           2.没有返回值类型,连void都没有

           3.没有具体的返回值(不能由return带回结果数据)

           4.构造方法不能手动调用,创建对象时由虚拟机调用

           5.每创建一次对象,就会调用一次构造方法

public class Friend {
    private String name;
    private int age;
 
    public Friend() {    //空参构造
         ...
    }
 
    public Friend(String name, int age) {   //带参构造
          ...
    }
 
}

例:

public class Friend {
    private String name;
    private int age;
 
    public Friend() {
        System.out.println("friend");
    }
 
    public Friend(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getName() {
        return name;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    public int getAge() {
        return age;
    }
}
public class FriendText {
    public static void main(String[] args){
        Friend f1 = new Friend();
        Friend f = new Friend("xiaoming" ,25);
        System.out.println(f.getName());
        System.out.println(f.getAge());
    }
}

(5)注意事项

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

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

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

       4.无论是否使用,都手动书写无参数构造方法和带全部参数的构造方法

       5.一旦定义了有参数的构造器,无参数构造器就没有了,此时就需要自己写无参数的构造器

6.标准的JavaBean类

  怎样正确书写

      1.类名需要见名知意

      2.成员变量使用private

      3.提供至少两个构造方法(无参构造方法、带全部参数的构造方法)

      4.提供每一个成员变量对应的setXxx()/getXxx()(如果还有其他行为,也需要写上)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值