Java面向对象

Java面向对象

面向对象基础

1.class和instance

class即类,instance即实例。

class是一种对象模版,它定义了如何创建实例,因此,class本身就是一种数据类型;

而instance是对象实例,instance是根据class创建的实例,可以创建多个instance,每个instance类型相同,但各自属性可能不相同。

2.实例

package oop;

// 定义一个city类
class City{
   
    // 创建类的字段即属性
    public String name;
    public double lattitude;
    public double longitude;
}


public class oop1 {
   
    public static void main(String[] args) {
   
        // 创建实例frist
        City frist = new City();
        // 对实例的属性赋值
        frist.name = "shanghai";
        frist.lattitude = 11;
        frist.longitude = 111;

        // 访问实例属性并打印
        System.out.println(frist.name);
        System.out.println(frist.lattitude);
        System.out.println(frist.longitude);
    }
}

3. 实例讲解

  • City类中包含了3个字段(field,有些语言叫做属性),通过class我们实现了数据的封装
  • public可以用来修饰方法和字段,表示其可以被外部访问
  • 创建实例用new,用Class名作为实例的数据类型
  • 访问实例属性时可以用变量.字段的形式,但是如果用private修饰了该属性则会报错

方法

1.方法的引入

上一级中,我们直接把属性用public修饰,把属性暴露给外部可能会破坏封装性。所以我们往往采用private修饰属性,然后通过方法来读取属性赋值

2.参数绑定

基本类型参数的传递,是调用方值的复制。双方各自的后续修改,互不影响

3.实例

package oop;

public class opp2 {
   

    public static void main(String[] args) {
   
        Person Jhon = new Person();
        // 调用实例的方法
        Jhon.setBirth(2000);
        System.out.println(Jhon.getage());
    }


}

class Person{
   
    // 定义私有属性,外部不可调用
    private String name;
    private int birth;

    // this永远指向当前实例,从而达到赋值的目的
    public void setBirth(int birth){
   
        this.birth = birth;
    }

    public int getage(){
   
        // 调用类内部私有的方法
        return calcAge(2020);
    }

    // 私有方法,仅允许类内部调用
    private int calcAge(int currentYear){
   
        return currentYear - this.birth;
    }
}

4.实例讲解

  • public int getage()该语句中,public用于修饰方法是否供外部调用,int则是该方法的返回数据类型
  • 通过this.field就可以访问当前实例的字段,如果命名没有冲突实际上可以省略this
  • this.birth = birth前一个birth指向实例的一个属性,后一个birth则是外部传入的参数,因为命名重复,所以要用this修饰

构造方法

1.构造方法应用

创建对象实例时,我们可以使用构造方法让内部字段初始化,其相当于类内部一个和类同名的特殊的方法。

2.默认构造方法

如果一个类没有定义构造方法,编译器会为我们生成一个默认的构造方法,因而我们可以在new Person()调用

如果我们自定义了一个构造方法,那么默认的构造方法将不会被创建

3.实例

package oop;

public class opp3 {
   
    public static void main(String[] args) {
   
        // 调用构造方法
        Person2 ming = new Person2("小明", 21);
        System.out.println(ming.getAge());
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值