Java学习四、面向对象编程

4.1面向对象OOP与面向过程POP

面向对象编程的三大特性:封装继承多态

Java的类及类的成员:

class类:属性(类中的成员变量)+行为(类中的成员方法)

类的格式:

修饰符 class 类名{

属性声明;

方法声明;

}

一个类的例子

public class Person {
    String name;
    int age;
    boolean ismarried;

    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;
    }

    public boolean isIsmarried() {
        return ismarried;
    }

    public void setIsmarried(boolean ismarried) {
        this.ismarried = ismarried;
    }

    public Person(String name, int age, boolean ismarried) {
        this.name = name;
        this.age = age;
        this.ismarried = ismarried;
    }
    
    public void walk(){
        System.out.println(this.name+"走路中...");
    }
    public String display(){
        return "名字:"+name+"年龄:"+age+ismarried;
    }
}

4.2对象的创建和使用

使用new+构造器创建一个对象

public class Test{
    public static void main(String[] args) {
         class Person{
            String name;
            int age;
            boolean isMarried;

            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;
            }

            public boolean isMarried() {
                return isMarried;
            }

            public void setMarried(boolean married) {
                isMarried = married;
            }

            public Person() {
            }

            public void walk(){
                System.out.println(this.name+"走路中.,.");
            }
            public String display(){
                return "名字为"+name+"年龄为"+"married"+isMarried;
            }
        }

        Person p=new Person();
        p.setName("张三");
        p.setAge(18);
        p.setMarried(false);
        p.walk();
        System.out.println(p.display());
    }
}

4.3类的成员之一:属性

类的成员属性的语法格式:修饰符 类型 属性名= 初值;

4.4类的成员之二:方法

方法是类或者对象行为特征的抽象,也称为函数。

Java中的方法不能独立存在,所有的方法必须定义在类里边。

语法格式:

修饰符 返回值类型 方法名(参数类型 形参1,参数类型 形参2...){

程序代码;

}

4.5对象的产生

当一个对象被创建时,会对其中各类型的成员变量自动进行初始化赋值, byte、short、int初始化自动赋值为0; long初始化自动赋值为0L; float初始化自动赋值为0.0F; double初始化自动赋值为0.0D; char初始化自动赋值为空 boolean初始化自动赋值为FALSE; 引用类型初始化自动赋值为NULL;

Java匿名对象:每次 new 都相当于开辟了一个新的对象,并开辟了一个新的物理内存空间。如果一个对象只需要使用唯一的一次,就可以使用匿名对象,匿名对象还可以作为实际参数传递,匿名对象就是没有明确的给出名字的对象,是对象的一种简写形式。一般匿名对象只使用一次,而且匿名对象只在堆内存中开辟空间,而不存在栈内存的引用。

Student a= new Student();
a.showInfo();
//匿名对象
new Student().showInfo();

4.6方法的重载

重载:在同一个类中,允许存在一个以上的同名方法,只需要他们的参数个数或者参数类型不同即可。

    public  int add(int x,int y){
        return x+y;
    }
    public float add(float x,float y){
        return x+y;
    }
    public int add(int x,int y,int z){
        return x+y+z;
    }

4.7包package和引用import

在Java中包的概念和文件的概念相似。

包里边还可以建包,包可以有多级目录,用.来指明包的层级。

包名通常小写,类名首字母通常大写。

为了使用定义在不同包中的java类,需要用import语句来引入指定包层次下所需要的类或者全部类(.*)。

注意:

  • import语句出现在package语句之后,类定义之前

可以使用import lee.*语句,导入lee包下的所有类,但是lee包下sub包类中的类不会被导入

4.8面向对象的特征之一:封装和隐藏

对不能随意让使用者调用的属性进行封装和隐藏 讲这些属性设置为private私有,在设置public公共方法设置或取得属性setXXX(),getXXX()。

package study;

public class Test {
    public static void main(String[] args) {
        class Person{
            private int age;

            public int getAge() {
                return age;
            }

            public void setAge(int age) {
                this.age = age;
            }
            public void printAge(){
                System.out.println(this.age);
            }
        }
        Person person=new Person();
        person.setAge(20);
        person.printAge();
    }
}

4.9四种访问修饰符

对于class的修饰符只能使用public和default

public类可以在任何地方被访问

default类只能被同一个包内的类访问

4.10类的成员之三:构造器(构造方法)

构造器的特征:

1.它具有与类相同的名称

2.他不声明返回值的类型。(与声明void不同)

3.不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值。

构造器的作用:创建对象;给对象初始化

构造器语法格式:

修饰符 类名(参数列表){

初始化语句;

}

根据参数不同,构造器可以分为如下两类:

隐式无参构造器(系统默认提供)

显式定义一个或多个构造器(无参、有参)

注意:

1.java语言中,每个类都至少有一个构造器

2.默认构造器的修饰符与所属类的修饰符一致

3.一旦显式定义了构造器,则系统不再提供默认构造器

4.一个类可以创建多个重载的构造器

5.父类的构造器不可以被子类继承

6.构造器方法可以重载

package study;

public class Person {
    String name;
    int age;

    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }

    public Person(int age) {
        this.age = age;
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

4.11关键字——this

1.this在方法内部使用,即这个方法所属对象的引用

2.this在构造器内部使用,即表示这个构造器正在初始化的对象

this表示当前的对象,可以调用类的属性、方法和构造器

this()可以调用构造器

this()等同调用无参构造器

this(1)等同调用一个参数的构造器

this(2)等同调用两个参数的构造器

4.12JavaBean

javabean是一种Java语言写成的可重用组件

所谓javabean,是指符合如下标准的Java类:

1.类是公共的

2.有一个无参的公共的构造器

3.有属性,属性一般私有、有对应的get、set方法

用户可以使用javabean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以

通过内部的JSP页面、servlet、其他javabean、applet程序或者应用来使用这些对象。用户可以认为javabean提供了一种随时随

地的复制和粘贴的功能,而不用关系任何的改变。

package study;

public class Person {
    private String name;
    private int age;

    public Person() {
    }

    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;
    }
}

鼠标右键 source generate getters and setters 自动生成set、get方法

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值