java(2) 面向对象
1.类的封装
*在定义一个类时,将类中的属性私有化,即使用prviate关键字来修饰,私有属性只能在它所在的类中被访问。为了能让外界访问私有属性,需要提供一些使用public修饰的公有方法,其中包括用于获取属性值的getXxx()方法和设置属性值的setXxx()方法。 class Student {
private String name; //将name 属性私有化
private int age; //将 age 属性私有化 //下面是公有的getXxx() 和 setXxx()方法。
public String getName(){
return name;
} public void setName(String stuName){
name = stuName;
} public int getAge(){
return age;
} public void setAge(int stuAge){ //对传入的参数进行检查
if(stuAge <= 0 ){
System.out.println("年龄不合法.......");
}else{
age = stuAge;
} } public void introduce(){
System.out.println("大家好,我叫"+ name + ",我今年"+ age + "岁!");
}
} public class ExampleTest{
public static void main(String[] args){
Student stu = new Student();
stu.setAge(-30);
stu.setName("liming");
}
} 2.this 关键字
* 通过 this 关键字可以明确地去访问一个类的成员变量,解决与局部变量名称冲突问题。 class Person{
int age;
public Person(int age){
this.age = age;
} public int getAge(){
return this.age;
}
} * 通过 this 关键字调用成员方法 class Person{
public void openMonth(){
.....
} public void speak(){
this.openMonth();
}
} * 构造方法是在实例化对象时被java虚拟机自动调用的,在程序中不能像调用其他方法一样去调用构造方法,但可以在一个构造方法中使用this关键字的形式来调用其他构造方法 class Person{ public Person(){
System.out.println("无参构造方法被调用了......");
} public Person(String name){ this();
System.out.println("有参构造方法被调用了......");
}
} public class ExampleTest{
public static void main (String[] args){
//实例化Person对象
Person p = new Person("itcast");
}
} * 在使用this调用类的构造方法时,应该注意以下两点
1.只能在构造方法中使用this调用其他的构造方法,不能在成员方法中使用
2.在构造方法中,使用this调用构造方法的语句必须放在第一行,且只能出现一次。 public Person(){
String name = "小名";
this(name); //由于不在第一行,编译错误
} 3.static 关键字 * 静态变量,在一个java类中,可以使用 static 关键字来修饰成员变量,该变量被称作静态变量。静态变量被所有实例共享,可以使用"类名.变量名"的形式来访问。 class Student{
static String schoolName; //定义静态变量
} public class ExampleTest{
public static void main(String[] args){
Student stu1 = new Student();
Student stu2 = new Student(); Student.schoolName = "阳明圣院"; //为静态变量赋值
System.out.println("我的学校是"+stu1.schoolName);
System.out.println("我的学校是"+stu2.schoolName);
} } 注意:static关键字只能用于修饰成员变量,不能用于修饰局部变量 * 静态方法 ,在一个java类中,方法前有 static 关键字修饰,我们称这种方法为静态方法。不需要创建类即可访问,访问方式"类名.方法名"。 class Person{
public static void sayHello(){ //定义静态方法
System.out.println("hello");
}
} class ExampleTest{ public static void main(String[] args){
Person.sayHello();
}
}
注意:在一个静态方法中只能访问用static修饰的成员,原因在于没有被static修饰的成员需要先创建对象才能访问。 * 静态代码块,用 static 关键字修饰的代码块称为静态代码块。当类被加载时,静态代码块会执行,由于类只加载一次,因此静态代码块之执行一次。 4.单例模式
* 单例模式是java中的一种设计模式,它是指在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象。 class Single{
//自己创建一个对象
private static Single INSTANCE = new Single();
private Single(){} //私有化的构造方法
public static Single getInstance(){ //提供返回对象的静态方法
return INSTANCE;
}
} * 单例模式具备如下特点
1.类的构造方法使用private修饰,声明为私有,这样就不能在类的外部使用new关键字来创建对象了
2.在类的内部创建了一个该类的实例对象,并使用静态变量INSTANCE引用该对象,由于变量应该禁止外界直接访问,因此使用private声明为私有成员
3.为了让类的外部能够获得类的实例对象,定义了一个静态方法getInstance(),用于返回该类实例INSTANCE.外界可以通过" Single.getInstance() "来获取该实例
java(2) 面向对象的更多相关文章
- java的面向对象
Java是1995年诞生.前身oak,后来改名为java. 面向对象的编程思想:对象是万事万物. 对象是由两部分组成的:属性和方法 1:属性是对象的静态特性(名词) 2:方法是对象的动态特性(动词) ...
- (Java)《head first java》值得Java或面向对象基础的新手看。
看完这本书后本人收获良多. 内容对Java以及面向对象的入门者非常友好. 抽象的内容惯用图解的方法来剖析,通俗易懂 之前看C#入门经典的面向对象时,依然浓浓的一头雾水. (1)很不解为何实例化要写成A ...
- java学习面向对象之异常之一
一.异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常.但是异常也分为可以处理的和不可以处理的.比如 ...
- Java之面向对象相关问题集
面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解所有问题,而仅仅是选择当中的一部分,临时不用部分细节. 抽 ...
- Java与面向对象
一.面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应 ...
- java基础面向对象之类与对象
java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...
- Java与面向对象之随感(2)
我们知道Java语言的一大特性就是相比于c语言和c++语言,其更加安全.那么Java安全性的一个重要保证就是它取消了指针,并且坚决反对数组的出界(c++对当数组超出上限但是还进行读写操作时允许的!), ...
- 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...
- Java的面向对象(初涉)
Java的面向对象(初涉) 面向对象的分析根据抽象关键的问题域来分解系统.面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成"现实世界&qu ...
- JAVA(一)JAVA基础/面向对象基础/高级面向对象
成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...
随机推荐
- Linux中mkdir和touch命令区别
一.目的 本文将介绍linux下新建文件或文件夹.删除文件或文件夹命令. touch能够新建文件,mkdir用来新建文件夹.rm用来删除文件或文件夹. 本文将选取ubu ...
- vim定位到指定行数
显示行号:命令模式下set nu 定位到指定行: 命令模式下,:n 比如想到第2行,:2 编辑模式下,ngg 比如想到第5行 5gg(或者5G) 打开文件定位到指定行 vim +n te ...
- Http协议中常用字段总结(不定时完善中)
1.Http协议概述 关于Http协议的发展,各种资料有很多,在此不再赘述,不明白的小伙伴儿可以去搜一下,Http报文分为请求报文和相应报文,由于Http是面向文本的,因此在报文中的每一个字段都是一些 ...
- mysql 5.1超过默认8小时空闲时间解决办法(错误:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure)
报错: MySQL第二天早上第一次连接超时报错, com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications lin ...
- 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向
8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 什么是shell? shell是一个命令解释器,提供用户和及其之间的交互 致辞特定语法,比如逻 ...
- js(数组篇02)
原文:http://www.cnblogs.com/zaking/p/8686676.html 上一篇文章简单的介绍了一下js的类型,以及数组的增删方法.这一篇文章,我们一起来看看数组还有哪些用法,以 ...
- [Learn AF3]第三章 App Framework 3组件之Panel:afui的核心
Panel,afui的核心组件 组件名称:Panel 使用说明:按照官方的说法,panel组件是af3的“核心(heart of the ui)”,panel用于构造应用中独立的内容展示区域, ...
- Java学习路线图(如何快速学Java)
不知不觉从初学Java到现在已经8年了,今天在这里给刚入门和入门不久的小伙伴们一些建议.可能总结的不是很详细,但给出了一个大概的学习路线.希望对大家有帮助哈~ 如何快速学Java 这里我以Java E ...
- JointJS绘制流程图
摘要: JointJS是一个javascript图表库.你可以使用它制作静态或者动态的图表.关系表.流程图. 效果图:
- python2内置属性
# encoding: utf-8 # module __builtin__ # from (built-in) # by generator 1.145 from __future__ import ...