------- android培训、java培训、期待与您交流! ----------
在上一篇的博文中已经介绍了基本的面向对象的知识,今天这篇博文主要介绍的有以下几个内容
1、成员变量和局部变量
2、匿名对象
3、封装
4、this关键字
5、构造方法
6、static关键字
1、成员变量和局部变量
成员变量是定义在类中的变量,而局部变量是定义在方法上或某个代码块中,比如for中等等
package day06;
public class ClassDemo01 {
public static void main(String[] args) {
Demo d = new Demo();
d.method();
}
}
class Demo{
int num; //成员变量
public void method(){
int num2 = 5; //局部变量
System.out.println("num:"+num+",num2:"+num2);
}
}
运行结果
通过运行结果我们发现,num没有初始化也有值,这个值为0,而局部变量如果没有被初始化就使用的话,编译就会报错。
这边我们就需要说说成员变量和局部变量的区别:
1、定义的位置不一样,成员变量定义在类中方法以外,而局部变量则定义在方法的声明上或者一些代码块中
2、在内存中的位置不一样,成员变量定义在堆中,局部变量定义在栈中,定义在堆中的变量都会有一个初始化的值。
3、生命周期不一样,成员变量的随着对象的创建而创建,随着对象的消失而消失,局部变量是随着方法的调用而存在,随着方法调用完毕而消失。
4、初始化值不同,成员变量有默认初始化值,而局部变量没有,必须定义赋值后才能使用。
在开发中我们常常会将对象作为形参,那么这时候实际上需要的是一个对象,即是对对象的引用。
2、匿名对象,匿名对象其实就是直接new出一个对象进行使用,不需要使用一个对象去接收new出来的对象。
package day06;
public class NoNameDemo {
public static void main(String[] args) {
new Demo2().method();;
Demo2 d3 = new Demo2();
d3.show(new Demo2());
}
}
class Demo2{
public void method(){
System.out.println("匿名对象调用");
}
public void show(Demo2 d){
d.method();
System.out.println("传过来一个匿名对象");
}
}
匿名对象的使用场景:当方法仅仅只需要调用一次的时候,还可以作为参数进行传递。
3、封装
封装是面向对象的三大特性之一,什么是封装呢?
封装就是将一些不需要对外提供的细节隐藏起来,并且对外提供一个公共的访问方式。
封装的体现之一就是private,private是一个修饰符,用于修饰变量、方法。
被private修饰的方法和变量只能在本类中被访问。
package day061;
public class PrivateDemo {
public static void main(String[] args) {
// new Demo().show();报错
new Demo().method();
}
}
class Demo{
private String str;
private void show(){
str = "hello world";
System.out.println(str);
}
public void method(){
show();
}
}
4、this关键字
this关键字是对当前对象的引用,this关键字代表的是一个对象,this.变量名或者this.方法名,该变量或者该方法属于哪个类,this就代表该类对象。
假设我有一个方法,方法中有一个成员变量和一个方法,方法上有一个形参,形参的名称与成员变量名相同,如果在方法中是用变量的话,使用的会是哪一个呢?
package day061;
public class PrivateDemo2 {
public static void main(String[] args) {
new Demo01().show("张三");
}
}
class Demo01{
String name;
public void show(String name){
System.out.println("name:"+name);
}
}
发现打印结果是张三,其实在java当中,如果成员变量和局部变量同名的话,首先会在方法中寻找是否有该变量,如果有,使用的就是局部变量,没有就使用成员变量,那么如果我们需要使用成员变量又该如何呢?需要使用成员变量的话就用this.成员变量名使用的就是成员变量了。
5、构造方法
构造方法是指与类名相同的方法,并且该方法没有返回值类型,默认的构造方法是无参构造方法,如果手动给定了一个带参的构造方法,那么系统就不再默认生成构造方法了。
构造方法的作用其实是对对象进行初始化操作
package day062;
public class Demo {
public static void main(String[] args) {
Student s = new Student();
System.out.println(s.name+":"+s.age);
Student s2 = new Student("张三",25);
System.out.println(s2.name+":"+s2.age);
}
}
class Student{
int age;
String name;
public Student(){ //无参构造方法
age = 18;
name = "小李";
}
public Student(String name,int age){
this.name = name;
this.age = age;
}
}
6、static关键字
static是静态的意思,用于修饰方法和变量。被static修饰的方法或者变量被所有对象所共享。
static特点:
随着类的加载而加载
优先于对象存在
被类的所有对象共享
在静态方法中只能访问静态成员,不能访问非静态成员
静态变量和成员变量的区别:
A:所属不同
静态变量:属于类,类变量
成员变量:属于对象,对象变量,实例变量
B:内存位置不同
静态变量:方法区的静态区
成员变量:堆内存
C:生命周期不同
静态变量:静态变量是随着类的加载而加载,随着类的消失而消失
成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失
D:调用不同
静态变量:可以通过对象名调用,也可以通过类名调用
成员变量:只能通过对象名调用
分享到:
相关推荐
黑马程序员_毕向东_Java基础视频教程第05天-01-面向对象(概述).avi
黑马程序员 - Java基础教学 - 05 - 面向对象(1).doc
1、 面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。 2、 JRE(Java Runtime Environment,Java 运行时环境),它相当于操作系统部分,提供了 Java 程序运 行时所需要的基本条件和许多 Java ...
传智播客_Java培训_毕向东_Java基础[03-面向对象]系黑马程序员_毕向东_Java基础视频教程
黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc
C++机房预约系统:面向对象,文件操作,黑马程序员,部分优化,模板
含面向对象,异常处理和常用类,线程技术,集合框架,IO操作,网络编程,文件操作,反射机制,
黑马程序员 - Java基础教学 - 06 - 面向对象(2) - 关于静态static的那些事.doc
1、面向对象都有哪些特性以及你对这些特性的理解12 1、 Java 中实现多态的机制是什么 1、 Java 中异常分为哪些种类13 2、 调用下面的方法,得到的
编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 Java是SUN(Stanford University Network,斯坦福大学网络...是简单易学,完全面向对象,安全可靠,与平台无关的编程语言
在下载和比较了大量同类书籍后不得不承认孙卫琴老师的这本书循序渐进由浅入深是最好的Java入门教程,同时它的...本资源包含《Java面向对象编程》的电子书,实例源代码,课后题答案等可以说是当前该书最全的资源了。。。
第1章 Java开发入门一.填空题1. 面向对象,SUN 2. JavaSE,JavaEE,JavaME3.面向对象、跨平台性、支持多线程4. JDK5.bin
C++面向对象——B站黑马程序员视频学习笔记。
(1)aop:面向切面编程,扩展功能不是修改源代码实现 (2)ioc:控制反转, - 比如有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new...
linux编程,ppt文档,gdb,makefile,linux编程概述
《JavaScript前端开发案例教程》是面向计算机相关专业的一门Web前端基础课程,涉及JavaScript语言基础、数组、函数、对象、BOM、DOM、事件、正则表达式、Ajax、jQuery等内容。
观看黑马程序员Java零基础视频教学,从60P方法开始总结的知识集合,请使用Xmind打开,如果需要学习请配合视频打开:https://www.bilibili.com/video/BV17F411T7Ao
精选12种与多线程和并发处理相关的设计模式 264张图表 + 300段Java示例程序 = 轻松学习多线程编程 日本经典多线程入门书,原版长销11年! 本书适合以下读者阅读 a....b....c....对面向对象开发感兴趣的人
Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。
由黑马程序员职工管理系统改编,内含5个头文件和5个源文件,可实现学生,老师,院长三级成员的增删改查操作。