Java学习第八天 面向对象⭐

Java的核心就是面向对象编程

属性+方法=类

什么是面向对象

package com.oop;
//引用传递:对象,本质还是值传递

//对象,内存之后弄明白了这里才看得明白
public class Demo05 {
    public static void main(String[] args) {
        Student1 student1 = new Student1();
        System.out.println(student1.name);//null

        Demo05.change(student1);
        System.out.println(student1.name);//fuyi
    }
    public static void change(Student1 student1){
        //sudent1是一个对象:指向的---->Student1 student1=new Student();这是一个具体的人,可以改变属性!
        student1.name="fuyi";
    }
}
//定义一个Student1类,有一个属性name
class Student1{
    String name;//默认值为null
}

 

类和对象的关系

一个项目应该只存在一个main方法

创建与初始化对象

package com.oop.demo02;
//学生类
public class Student {

//属性:字段
    String name;
    int age;

    //方法
    public void study(){
        System.out.println(this.name+"在学习");
    }

}
package com.oop.demo02;
//一个项目应该只存在一个main方法
public class Application {
    public static void main(String[] args) {
        //类:抽象的,应该实例化
        //类实例化后会返回一个自己的对象!
        //student对象就是Student类的实例
        Student student = new Student();
        Student xiaohong = new Student();

        xiaohong.name="小红";
        xiaohong.age=4;

        student.name="小明";
        student.age=5;

        System.out.println(xiaohong.name);
        System.out.println(student.name);
    }
}

构造器详解

package com.oop.demo02;

import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;

//java--->class
public class Person {

    //一个类即使什么都不写,也会存在一个方法
    //显示的定义构造器

    String name;

    //实例化初始值
    //构造器核心功能:
    //1.使用new关键字,本质是在调用构造器
    //2.用来初始化值
/*
    //无参构造
    public Person(){
this.name="fuyi";
    }
//有参构造,一旦定义了有参构造,无参必须显示定义
    public Person(String name){
        this.name=name;
    }

 */
    //alt+insert Constructor+ok:默认生成有参,前面定义
    //String name;如果再定义int age;快捷键里也会多一个age的选项

    public Person(String name) {
        this.name = name;
    }
    //alt+insert Constructor+select none:默认生成无参


    public Person() {
    }
}
/*
/new 实例化了一个对象
        Person person = new Person();

        System.out.println(person.name);//默认是null

    }

    构造器:
    1.和类名相同
    2.没有返回值

    作用:
    1.new本质在调用构造器
    2.初始化对象值

    注意点:
    定义了有参构造之后,如果像使用无参构造,
    显示的定义一个无参的构造

    this. 代表这个类
 */

 

 

package com.oop.demo03;

public class Pet {
    public String name;
    public int age;

    //无参构造
    public void shout(){
        System.out.println("叫了一声");
    }
}
/*
public static void main(String[] args) {

        Pet dog = new Pet();
        dog.name="wangcai";
        dog.age=3;
        dog.shout();

        System.out.println(dog.name);
        System.out.println(dog.age);
    }
 */

 

小节

 

面向对象三大特性:封装

package com.oop.demo04;
/*
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口
4.系统可维护性增加了
 */
//类   private:私有
public class Student {
    //属性私有
    //名字
    public String name;
    //学号
    private int id;
    //性别
    private char sex;

    //提供一些可以操作这个属性的方法
    //提供一些public的get set方法

    //get获得这个数据
    public String getName(){
        return this.name;
    }
    //set 给这个数据设置值
    public void setName(String mz){
        this.name=mz;
    }

    //alt+insert

    public int getId() {
        return id;
    }

    public void setId(int id) {
        if(id>100||id<0){
            this.id=3;
        }else {
            this.id = id;
        }
    }
}

/*
public static void main(String[] args) {
        Student s1 = new Student;
        s1.name="";
        s1.sex="";  //报错

        s1.setName("fuyi");
    }
    
     public static void main(String[] args) {
        Student s1 = new Student();

        s1.setName(" fy");
        System.out.println(s1.getName());

        s1.setId(111);
        System.out.println(s1.getId());
    }
 */

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值