• 【小白的java成长系列】——面向对象基础


    今天来说说java面向对象的知识点~事实上。java在其发展过程中可以成功。非常大一部分原因是其面向对象的思想~

    1、概念

    如今来说面向对象思想。也不是什么新的知识点了,我们知道如今非常多语言都有面向对象的思想了;当然我们还知道如今依然非常火的C语言。事实上还是面向过程的语言。包含近期一段时间也出现了非常多新的思想,比方面向函数,面向分布式,面向...等等一系列的东东,事实上这些都仅仅是一个概念而已~

    在面向对象中。实际上还存在着三个基本的特性:
    ·封装性:保证对外部不可见;
    ·继承性:继续发扬广大。
    ·多态性:就属于变来变去;


    2、类与对象

    好了,概念说完了。来说说类与对象吧。。

    类:类是一组共性的产物,是同一类事物的集中表现。
    对象:是一种个性的体现,是个体的产物。

    这句话非常重要:类是对象的模板。对象是类的实例


    3、java中类的定义

    java中定义类有两种方式:public class和class

    · 使用 public class 声明的类必须与文件名同样,假设使用class 声明的类能够与文件名不同

    · 在一个*.java的文件之中,仅仅能存在一个public class。可是能够同一时候存在多个class的定义

    · 仅仅要是定义类则要求每一个单词的首字母大写 ——> 约定

    比方这边的People.java文件里的定义:

    package me.javen.oop;//包名
    
    class Person { // 定义类
    	String name; // 定义属性
    	int age; // 定义属性
    
    	public void say() { // 定义方法
    		System.out.println("123");
    	}
    }
    
    public class People { // 定义类
    
    	public static void main(String[] args) {// 定义方法
    
    	}
    
    }

    4、java中使用类——>对象

    那么上面定义的类,怎么来使用呢?

    Person person = null;//在栈内存中声明,此过程叫做声明对象
    person = new Person();//开辟相应的堆内存空间,此过程叫做实例化对象

    事实上能够写成一条语句的,一般在开发中也是一条的~

    即:Person person = new Person();

    这边是为了说明其内存结构才写成两条的。

    看下面程序:

    	public static void main(String[] args) {// 定义方法
    		Person person = null;
    		person = new Person();
    		
    		//使用类中的属性
    		person.name="Mr.稻帅";
    		person.age=24;
    		
    		person.say();	//用法
    	}

    这样子,类和对象的基本使用就基本介绍完毕了。。

    以下来介绍构造方法

    5、构造方法

    定义:在一个类中定义的方法名称与类名称同样。且无返回值声明的方法,称为构造方法。

    还是看到刚刚的代码:person = new Person();

    事实上在new的过程中,new的是Person类的默认构造方法。

    记住:在一个类中假设没有明白的定义一个构造方法的话,则会自己主动生成一个无參的,什么都不做的构造方法。假设类中存在构造方法,则在new的过程中就必须使用定义了的构造方法。

    这句话对于小白,理解起来可能有点困难,分号前面的可能好理解一点..參考Person就能理解前半句。后半句关于使用构造方法可能就有点困难了。事实上也不难,看以下程序:


    看到了不,eclipse的java语法校验会报错,报的是未定义Person()这样一个构造方法,而在Person类中定义的是Person(String name, int age)这种一个构造方法。。

    当然构造方法能够定义多个的~

    class Person { // 定义类
    	String name; // 定义属性
    	int age; // 定义属性
    
    	
    	public Person(String name, int age) {// 定义两个參数的构造方法
    
    	}
    
    	public Person(String name) {// 定义一个參数的构造方法
    
    	}
    
    	public Person() {// 定义无參构造方法
    
    	}
    
    	public void say() { // 定义方法
    		System.out.println("姓名:" + name + "。年龄:" + age);
    	}
    }

    这样,构造方法也算是说完了。。

    以下来说说封装性。

    6、封装性

    从定义上看:封装性就是指类内部的定义对外部不可见。

    作用是为了保护数据的安全性~

    那什么叫做对外部不可见?

    看代码:

    	private String name; // 定义属性
    	private int age; // 定义属性


    在使用的过程中就会有错误,提示的是没有权限訪问(对外部不可见)

    以上的一种形式就叫做封装~

    那么,name和age属性怎么訪问了?

    package me.javen.oop;//包名
    
    class Person { // 定义类
    	private String name; // 定义属性
    	private int age; // 定义属性
    
    	/*
    	 * 对封装的属性使用setter和getter方法
    	 */
    	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 Person(String name, int age) {// 定义两个參数的构造方法
    	}
    
    	public Person(String name) {// 定义一个參数的构造方法
    	}
    
    	public Person() {// 定义无參构造方法
    	}
    
    	public void say() { // 定义方法
    		System.out.println("姓名:" + name + ",年龄:" + age);
    	}
    }
    
    public class People { // 定义类
    	public static void main(String[] args) {// 定义方法
    		Person person = null;
    		person = new Person();// 添加了无參构造方法
    		// 通过setter方法设置值
    		person.setName("Mr.稻帅");
    		person.setAge(24);
    
    		person.say(); // 用法
    		//通过getter方法获取封装了的属性的值
    		System.out.println("姓名:" + person.getName() + ",年龄:" + person.getAge());
    	}
    
    }
    

    注意:

    1、属性或方法不希望被外部所訪问的话。则能够使用privatekeyword声明;

    2、在开发过程中。假设不是特殊情况,java类中定义的属性基本都要求设置封装。


  • 相关阅读:
    c#Socket通讯
    LeetCode 836. 矩形重叠
    AOP之SpringAOP、AspectJ、CGlib
    Springboot启动流程,跟着源码看看启动的时候都做了什么
    Mybatis/Mybatis plus/Hibernate如何忽略指定的字段不与数据库映射
    LeetCode 206. 反转链表
    LeetCode 1071. 字符串的最大公因子
    LeetCode 994. 腐烂的橘子
    Java生鲜电商平台-监控模块的设计与架构
    Java生鲜电商平台-售后模块的设计与架构
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5380258.html
Copyright © 2020-2023  润新知