Java中的面向对象以及关键字private与this

面向对象

学习java要有面向对象的思维,学习C语言一般用的是面向过程,面向过程开发就是要实现一个功能,需要把功能的每一个步骤和过程一步一步用程序实现了。

面向对象:当我们需求少的时候,我们一步一步去操作很快,但是随着功能的增多,发现需要面对每一个步骤很麻烦,这时我们就可以,把这些步骤和功能进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起,这样结构比较清晰,用的时候,找到对应的类就可以了,这就是面向对象的思想。

面向对象的思想特点:

a:是一种更符合我们思想习惯的思想
b:可以将复杂的事情简单化
c:将我们从执行者变成了指挥者,角色发生了转换,不断的创建对象,使用对象,指挥对象做事情。

面向对象的特征:
封装(encapsulation):是类和对象概念的主要特性,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承(inheritance):它可以实现有类的所有功能,并且在无需重新编写原来的类的情况下对这些功能进行扩展。

多态(polymorphism):是允许你将父对象设置成为一个或更多的 他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给他的子对象的特性以不同的方式运作。

面向对象的三个特征先是了解,后面会详细的学习。

类和对象

类:是一组相关的属性和行为的集合,比如我们定义一个学生:

属性:姓名 ,年龄,性别,地址。对应的是成员变量

行为:吃饭,睡觉,学习,写作业。对应的是成员方法

成员变量:和以前定义变量是一样的,只不过位置发生了改变,在类中,在方法外。

成员方法:和以前定义方法是一样的,只不过把static去掉。

对象:是该类事物的具体表现。

举例:

类 学生

对象 班长就是一个对象

例如:手机类的定义


public class Phone {
    String name = "小米";
    double price = 1000;
    String color = "白色";
    public void call(String name) {
        System.out.println("给" + name + "打电话");

    }

    public void sendMsg(String name, String content) {
        System.out.println("给" + name + "发短信,内容是" + content);

    }

定义了三个成员变量(手机的名字,手机的价格,手机的颜色)两个成员方法,也就是手机的功能,打电话,发短信。

如何创建对象

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

使用成员变量: 对象名.变量名

使用成员方法: 对象名.方法名(…)

例如:手机对象的创建

public class MyTest2 {
    public static void main(String[] args) {
        Phone phone = new Phone();
        String name = phone.name;
        double price = phone.price;
        String color = phone.color;
        System.out.println(name);
        System.out.println(price);
        System.out.println(color);
        phone.call("杜兰特");
        phone.sendMsg("杜兰特","你打篮球打的很好");

    }
}

三个引用,有两个对象指向同一个地址,内存图
在这里插入图片描述

成员变量和局部变量的区别

成员变量:在类中方法外,在堆内存,随着对象的创建而存在,随着对象的消失而消失,有默认初始化值。

局部变量:在方法中或者方法声明上(形参),在栈内存,随着方法的调用而存在,随着方法的调用完毕而消失。

注意:局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则

匿名对象的概述和使用

匿名对象:没有引用数据类型变量指向的对象称作为匿名对象,

new Student();//匿名对象//名字是类名

Student st=new Student();//对比引用数据类型指向

注意:两个匿名对象不可能是同一个对象,

2.不会给匿名对象赋予属性值,因为无法获取到属性值

3.匿名对象主要是调用方法

匿名对象的应用场景:调用一个对象的方法一次后不再使用。

2.作为实参传递,调用方法使用

封装的概述

隐藏事物的实现细节,对外提供公共的访问方式。

封装的好处:隐藏实现细节,提供公共的访问方式,提高代码的复用性,提供安全性

封装原则:将不需要对外提供的内容都隐藏起来,把属性隐藏,提供公共方法对其访问。

private关键字的使用

private 的特点:是一个权限修饰符,可以修饰成员变量和成员方法,被其修饰的成员只能在本类中被访问。

例如:

public class Person {
    private String name;
    private int age;
    public void setAge( int  nianling){
        if(nianling>0&&nianling<=100){
            age=nianling;}
            else{
            System.out.println("输入不合理");
        }
    }
    public int getAge(){
        return age;
    }
    public void setName(String mingzi){
        name=mingzi;
    }
    public String getName(){
        return name;
    }
}
public class Mytest {
    public static void main(String[] args) {
        Person person = new Person();
       // person.age=23; 不能直接访问了
        person.setAge(101);
        int age = person.getAge();
        person.setName("王五");
        String name = person.getName();
        System.out.println(name);
        System.out.println(age);


    }
}
通过set方法,来给成员变量设置值,通过get方法来获取值

this关键字的使用

当我们的局部变量和成员变量相同的时候,如果我们不使用关键字this,那么就会导致局部变量隐藏了成员变量。

this关键字的特点:是当前类的对象引用,谁调用这个方法,那么该方法的内部的this就代表谁。

例如:

public class Teacher {
    private String name;
    private  int age;
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return this.name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return this.age;
    }

}
public class Mytest1 {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.setName("lisi");
        teacher.setAge(20);
        String name = teacher.getName();
        int age = teacher.getAge();
        System.out.println(name);
        System.out.println(age);



    }
}

如果没有关键字this,成员变量就会和局部变量重名,就会输出 null 和this

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值