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) 面向对象的更多相关文章

  1. java的面向对象

    Java是1995年诞生.前身oak,后来改名为java. 面向对象的编程思想:对象是万事万物. 对象是由两部分组成的:属性和方法 1:属性是对象的静态特性(名词) 2:方法是对象的动态特性(动词) ...

  2. (Java)《head first java》值得Java或面向对象基础的新手看。

    看完这本书后本人收获良多. 内容对Java以及面向对象的入门者非常友好. 抽象的内容惯用图解的方法来剖析,通俗易懂 之前看C#入门经典的面向对象时,依然浓浓的一头雾水. (1)很不解为何实例化要写成A ...

  3. java学习面向对象之异常之一

    一.异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常.但是异常也分为可以处理的和不可以处理的.比如 ...

  4. Java之面向对象相关问题集

    面向对象的特征有哪些方面  1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解所有问题,而仅仅是选择当中的一部分,临时不用部分细节. 抽 ...

  5. Java与面向对象

    一.面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应 ...

  6. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

  7. Java与面向对象之随感(2)

    我们知道Java语言的一大特性就是相比于c语言和c++语言,其更加安全.那么Java安全性的一个重要保证就是它取消了指针,并且坚决反对数组的出界(c++对当数组超出上限但是还进行读写操作时允许的!), ...

  8. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  9. Java的面向对象(初涉)

    Java的面向对象(初涉) 面向对象的分析根据抽象关键的问题域来分解系统.面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成"现实世界&qu ...

  10. JAVA(一)JAVA基础/面向对象基础/高级面向对象

    成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...

随机推荐

  1. Linux中mkdir和touch命令区别

    一.目的 本文将介绍linux下新建文件或文件夹.删除文件或文件夹命令.         touch能够新建文件,mkdir用来新建文件夹.rm用来删除文件或文件夹.         本文将选取ubu ...

  2. vim定位到指定行数

    显示行号:命令模式下set nu 定位到指定行: 命令模式下,:n   比如想到第2行,:2 编辑模式下,ngg  比如想到第5行 5gg(或者5G) 打开文件定位到指定行   vim  +n  te ...

  3. Http协议中常用字段总结(不定时完善中)

    1.Http协议概述 关于Http协议的发展,各种资料有很多,在此不再赘述,不明白的小伙伴儿可以去搜一下,Http报文分为请求报文和相应报文,由于Http是面向文本的,因此在报文中的每一个字段都是一些 ...

  4. mysql 5.1超过默认8小时空闲时间解决办法(错误:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure)

    报错: MySQL第二天早上第一次连接超时报错, com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications lin ...

  5. 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 

    8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 什么是shell? shell是一个命令解释器,提供用户和及其之间的交互 致辞特定语法,比如逻 ...

  6. js(数组篇02)

    原文:http://www.cnblogs.com/zaking/p/8686676.html 上一篇文章简单的介绍了一下js的类型,以及数组的增删方法.这一篇文章,我们一起来看看数组还有哪些用法,以 ...

  7. [Learn AF3]第三章 App Framework 3组件之Panel:afui的核心

    Panel,afui的核心组件 组件名称:Panel     使用说明:按照官方的说法,panel组件是af3的“核心(heart of the ui)”,panel用于构造应用中独立的内容展示区域, ...

  8. Java学习路线图(如何快速学Java)

    不知不觉从初学Java到现在已经8年了,今天在这里给刚入门和入门不久的小伙伴们一些建议.可能总结的不是很详细,但给出了一个大概的学习路线.希望对大家有帮助哈~ 如何快速学Java 这里我以Java E ...

  9. JointJS绘制流程图

    摘要: JointJS是一个javascript图表库.你可以使用它制作静态或者动态的图表.关系表.流程图. 效果图:

  10. python2内置属性

    # encoding: utf-8 # module __builtin__ # from (built-in) # by generator 1.145 from __future__ import ...