Java SE基础–OOP开始(通俗易懂版快速了解是什么东西、干嘛用)

Java SE基础–OOP开始(通俗易懂版快速了解是什么东西、干嘛用)

面向对象

类与对象的创建

一个程序只有一个主类–包含main方法

//方法
//学生类
public class Student{
//类只有属性和方法。
    String name;
    int age;
	
public void study(){
	System.out.println("")
}

}		
//主方法
public class Application{
pubic static void main(String[] args){
		Student xiaoming =new Student();
        xiaoming.name="王小明";
        xiaoming.age=3
    	
}
}

构造器

无参构造器

public class Person{
    
}


public class Application{
    public static void main(String[] args){
        Person p=new Perosn();
        //此时已经实例了一个Person对象
        /*
        new Person()===> 在Person中执行了
        public class Person{
    		public Person(){
    		---该方法就是默认的构造方法-无参构造
    		1.构造方法跟类名一样
    		2.不能有返回值(自我理解:构造的方法:给其他人使用时自由发挥不能规定死返回值,void都不可以有)
    		}
}
        */
    }
}
有参构造器
public class Person{
String name;
    public Person(){
    //无参构造器
        this.name="wangliu"
    }
    public Person(String name){
       //有参数构造器
        this.name=name;
    }
}
构造器的作用
1.new创建一个对象,必须有构造器,默认有一个无参构造器
2.有参数构造定义--必须要显示定义无参数构造
3.最重要的使用是用来初始化值
4.idea中alt+insert 选择getter和setter方法(一键生成)

封装(该漏的漏该藏的藏,内部自己操作,给用户接口来使用–高内聚、低耦合)

1.属性私有--只可以给当前类获取

public class Student {
    public String name;
    public int score;
}
>>>改为
public class Student {
    private String name;
    private int score;
    //现在这些属性-外部类是不能操作的
    }

2.提供操作私有属性的  公共方法给用户用(接口)
//get set 方法
public class Student {
    private String name;
    private int score;
    
    public String getName(){
    return this.name;
    }
    publid void setName(String name){
    	this.name=name;
    	//这样外部类就可以调用这个函数来操作Student的值了
    	/*
    	如
    	public static void main(String[] args){
    	Student s1=new Student();
    	s1.setName("zhasngsan");
    	--现在Student的值已经被初始化了--
    	打印 s1.getName  
    	}
    	*/
    }
}

封装方法使用案例–此处展示封装安全性保护数据被恶意破坏
public class Student {
    private String name;
    private int age;
    //getter and setter 方法省略(使用快捷键生成即可)--保留举例的一个set方法
    public void setAge(int age){
        //可以通过set来设置校验输入的值
        if(age>200||age<0){
            this.age=1;//非法数据默认设置1岁
        }
        else{
            this.age=age;
        }
    }
    }
.....main(String[] args){
    Student s=new Student();
    s.setAge(70);
    se.setAge(1000);
}

封装的作用
  • 数据隐藏
    • 封装允许开发者隐藏对象的状态信息,只暴露必要的方法来与这些状态进行交互。这样可以防止外部代码直接修改对象的内部状态,从而保证了数据的安全性。
  • 接口控制
    • 通过提供公共的方法(API),封装确保了对外部世界展现一个清晰且受控的接口。这使得对象的行为更加可预测,并且易于维护。
  • 提高模块化
    • 封装有助于将程序分解成更小、更易管理的部分。每个部分(类或对象)负责处理特定的任务,这有助于降低系统的复杂度。
  • 简化使用
    • 使用封装后,用户不需要了解对象内部是如何工作的,只需要知道如何调用方法即可。这降低了学习成本,并使程序更加易于使用。
  • 增强灵活性和可扩展性
    • 当需要改变对象的内部实现时,只要不改变对象提供的公共接口,其他依赖该对象的代码就不需要做任何更改。这使得程序更容易适应变化,并且便于添加新功能。

继承(对某一批好的东西(类)延续吸取,构建美好世界)

public class Xiaoming extends XiaomingFather {
    // Xiaoming 类的具体实现
}

public class Teacher extends Person {
    // Teacher 类的具体实现
}

public class XiaomingFather extends Person {
    // XiaomingFather 类的具体实现
}

public class Person {
    // Person 类的具体实现
}

1只能单继承(一个儿只有一个爹)即是:一个类后面只能跟一个extends,但是可以树层级继承

2.子类继承父亲:就继承父的所有方法和属性–但是只可以用公有的(一般属性会有私有的,方法一般不是私有)

3子类不能使用父私有的的东西–如父类私有的私房钱放在你不知道的地方,一辈子你都不知道,根本没法调用,但是你找到一个笔记本上记录着如何找到存放位置(就是父亲提供的getter、setter方法,如果有就可以通过方法拿到属性(私房钱),如果没有就拿不到)

4.所有类都继承Object类-祖先类,为了理解如果爷爷、父亲、你把所有属性方法都去掉,你仍然可以调用一些方法属性就是提供的

super与this

this调用当前类的属性和方法、super调用父类的属性和方法(可以是protected,但是private还是不可!!!)

此处有个注意:默认无参构造器先执行:,如果子类中的无参构造器被调用了则父类的无参构造会先调用

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值