【小白的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类中定义的属性基本都要求设置封装。
【小白的java成长系列】——面向对象基础的更多相关文章
- 【小白的java成长系列】——javakeyword
准备出一个系列的内容啦,今天就从keyword開始说起吧~ 类型 keyword 说明 keyword 说明 訪问控制权限 public 公共的.公开的. protected 受保护的.用来修饰属性或 ...
- 【小白的java成长系列】——java ide 开发工具eclipse的操作
今天看了一下自己的博客文章,里面的内容还是比較杂的,有好多技术,有好多语言,都没有突出自己的强项,能够说,从博客里面,看不出我究竟是做哪块的..加上今天被授予了博客准专家勋章,自己想了一下,还是得梳理 ...
- 【小白的java成长系列】——顶级类Object源代码分析
首先来说一下api文档使用,api这个词对有一定开发经验的java编程人员来说是非常喜爱的~ java当然也提供了api开发文档,下载地址:http://www.oracle.com/technetw ...
- 【小白的java成长系列】——windows下搭建和配置java环境
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/enson16855/article/details/25967851 基于非常多原因,还是得说说ja ...
- Java学习 · 初识 面向对象基础一
面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决 ...
- [java学习笔记]java语言核心----面向对象基础
1.面向对象概述 面向对象是java语言的核心.是对应于面向过程而言的. 面向过程:强调的是过程,即动作.在java中动作就是函数.C语言就是面向过程的. 如:把大象装进冰箱需要几步? 答:需要三步: ...
- Java学习 · 初识 面向对象基础二
Package 为什么需要使用package a) 解决类重名的问题 b) 便于管理类 怎么使用package a) 类的第一句非注释性语句 b) 命名:域名倒着写,再加上模块名 注意 ...
- Java编程系列文章序言
Java编程系列分为基础编程和高级编程两部分: 其中基础编程包括基础语法如变量和标识符,流程控制等,数组如一维数组二位数组等,及面向对象,异常处理: 高级部分多线程,常用类,注解,Java集合,泛型, ...
- Python学习系列(八)( 面向对象基础)
Python学习系列(八)( 面向对象基础) Python学习系列(七)( 数据库编程) 一,面向对象 1,域:属于一个对象或类的变量.有两种类型,即实例变量—属于每个实例/类的对象:类变量—属于类 ...
随机推荐
- 用python3破解wingIDE
值得注意的是,python2的整除/在python3中变成了//,sha方法细化成了sha1和sha256,所以破解文件需要更改加密方式和整除部分的编码方式,经过修改后,这个文件可以完美演算出破解码, ...
- JS简单入门教程
JS简单教程 使用方法:放到任意html页面的head标签下 Test1方法弹出当前时间对话框 Test2方法for循环输出 Test3方法for(…in…)输出数组内容 <script typ ...
- servicestack操作redis
tatic void Main(string[] args) { );//redis服务IP和端口 #region =insert= var storeMembers = new List<st ...
- CSS抗锯齿 font-smoothing
CSS3里面加入了一个“-webkit-font-smoothing”属性. 这个属性可以使页面上的字体抗锯齿,使用后字体看起来会更清晰舒服. 加上之后就顿时感觉页面小清晰了. 淘宝也在用哦! 它有三 ...
- Tcl之group arguments
1 doubel quotes This allows substitutions to occur within the quotations - or "interpolation&qu ...
- IIS启动出错解决方法
IIS出现server application error,最终解决办法2007年10月30日 星期二 20:38Server Application Error The server has enc ...
- 王家林的“云计算分布式大数据Hadoop实战高手之路---从零开始”的第十一讲Hadoop图文训练课程:MapReduce的原理机制和流程图剖析
这一讲我们主要剖析MapReduce的原理机制和流程. “云计算分布式大数据Hadoop实战高手之路”之完整发布目录 云计算分布式大数据实战技术Hadoop交流群:312494188,每天都会在群中发 ...
- QCon 2013 上海 -- 互联网金融
互联网金融应该是最近很火爆的一个领域.由于阿里小贷和余额宝的初步成功,这一块都被视为破除传统金融领域垄断的法宝.大家可能都知道,电商平台.金融和大数据是阿里集团未来的三个重要方面.而关于金融,马云最经 ...
- hdu5514-Frogs(容斥原理)好题
题意:有m个石头围成一圈,编号分别为0到m-1,现在有n只青蛙,都在0号石头上,第i只青蛙会从当前编号为p的石头跳到编号为(p+ai)%m的石头上.被青蛙经过的石头都会被占领,求这m块石头中所有被占领 ...
- hive权威安装出现的不解错误!(完美解决)两种方法都可以
以下两种方法都可以,推荐用方法一! 方法一: 步骤一: yum -y install mysql-server 步骤二:service mysqld start 步骤三:mysql -u root - ...