Java-->类的成员
一、方法重载
在同一个类中,方法名相同、形参列表不同的两个多个方法之间构成重载!overload 调用方法的时候,是根据你传递的实参,来决定到底调用的是重载的哪个方法!!!
注意:
1、判断形参列表是否相同时,只看形参的类型,而不管变量名
2、是否重载和返回值类型没有任何的关系!
3、形参列表不同:个数不同或者顺序不同都是不同
4、重载其实多态中的一种情况:静态多态
void speak(){
System.out.println("啥都不说");
}
void speak(String msg){
System.out.println("说:" + msg);
}
以下不是重载
虽然参数名不同,但是类型不同,这不是重载,这是重复
void speak(int a){
}
void speak(int b){
}
二、构造方法
主要作用:对创建的对象做一些初始化的工作!!!
构造器、构造函数、构造方法、Constructor
构造方法的特点:
1、首先他是一个方法
2、构造方法名与类名相同!!!
3、构造方法没有返回值类型!!! 连void都不许写
4、构造方法是在创建对象 new 类名() 的时候调用的。
5、构造方法,不能通过对象.方法名()去调用。
6、构造方法也支持重载!!!
构造方法分两大类:
1、无参的构造方法:
a:如果一个类,没有显示的声明任何的构造方法,则系统会自动添加一个默认的无参构造方法。这个默认的无参构造,没有任何的实现(里面没有任何的代码)。
b:如果添加任何一个构造方法,则系统不再添加无参的构造方法。
2、有参的构造方法:
建议:写类的,总是手动添加一个无参的构造方法!!!
三、封装性
面向对象的三大特征:封装性、继承性、多态性
private 它可以用来修饰属性和方法。代表这个成员是私有。私有的成员,只能在当前的类中访问,出了类之后,别的地方没有权限进行访问。
public 修饰的属性和方法,在任何的地方都可以访问
给私有的属性,提供可读的方法
public int getAge(){
return age;
}
public String getName(){
return name;
}
给私有的属性,提供可写的方法
public void setAge(int a){
age = a;
}
public void setName(String n){
name = n;
}
setter、getter方法
通常意义上的普通类,一般都会封装属性,然后再提供相应的setter和getter方法
三、this关键字
变量访问原则:就近原则!
1、this指代当前类的对象
指代当前对象,this如果省略之后仍然指代成员变量,则可以省略。
this指代当前对象,可以调用当前对象的属性和方法!
public void eat(String food){
System.out.println("正在吃:" + food);
}
// 对象、实例、非静态 方法
public void eat(){
this.eat("竹子"); //这个位置的this可以省略
}
注意:如果调用一个方法的时候,没有指定对象,那么其实是省略了this
在一个类的内部,调换用自己的方法的时候,都会省略this
2、this可以在构造方法的内部去调用其他的构造方法
this(参数)
注意:
1、用this调用构造方法的时候,不能 a调用b,b再调用a
2、this调用构造方法的时候,必须放在构造方法的首行。
3、一个构造方法如果没有显示的用this去调用其他构造方法或者用super去调用
父类的构造方法,则这个构造方法,一定默认调用了父类的无参的构造方法。
3、this可以作为实参传递。代表的是当前对象的引用。
public void fun(){
Person person = new Person();
person.play(this); //可以把作为参数传递到方法的内部
}
四、static关键字
static 表示静态,可以修饰属性和方法!!!被static修饰的成员称之为静态属性或静态方法。(不被static修饰:实例方法、非静态方法)
修饰属性的时候,表示这个属性是静态,这个属性就是一种公共的资源,是被所有的对象所共有。
当访问静态的成员的时候的,最标准的做法是不建议使用对象去访问静态成员!
用静态的方式去访问静态成员:类名.静态成员 。静态时随着类的加载而初始化的,只有类第一次加载到内存的时候就完成了初始化。
永远不要使用对象的方式去访问静态东西!!
访问静态永远使用类名去访问,而不要使用对象去访问。 静态的东西,已经和对象没有多大的关系。静态的东西,是属性类的, 所有静态的属性和静态方法,我们称之为:类方法和类属性
在实际中,很多的工具类都是提供了很多的静态方法来让我们使用!!!
静态不能访问非静态!!!
非静态可以访问静态!!!
在静态方法中会不会可能出现this? 不可能
static修饰代码快,称之为静态代码块!
构造代码块:
{
System.out.println("我是代码块");
}
注意:先执行构造代码块再执行构造方法。 构造代码在实际没有使用价值
静态代码块:
static{
System.out.println("我是静态代码块");
}
注意:静态代码块,只有类第一次加载的时候,才会调用,所以静态代码库之执行一次。 在类加载的时候,对类的静态的属性做一些初始化的工作。
总结:
类里面都可以放哪些东东?
1、实例变量(属性)
属于对象的,只能有了对象之后才能访问。
2、静态变量(静态属性)
不属于某个具体的对象,而是属于类的。使用静态的方式去访问:
类名.静态
3、实例方法
属于对象的,只有有了对象之后才能访问。
4、静态方法
属于类。静态方法也称为类方法。 类名.静态方法。
静态能访问非静态,非静态可以访问静态!
5、构造方法
构造方法只有在使用new来创建对象的时候才会执行。
6、代码块
a:构造代码块
创建对象的时候调用,而且是优先于构造方法执行!
b:静态代码块
类加载到内存中的时候调用。整个生命周期中,静态代码块只执行一次。
Java-->类的成员的更多相关文章
- Java类的成员初始化顺序
Java类的成员初始化顺序 2017-06-01 代码: public class InitializeSequence { public static void main(String[] args ...
- java类的成员初始化顺序和初始化块知识
java类的成员初始化顺序和初始化块知识 转自:http://blog.csdn.net/lgfeng218/article/details/7606735 属性.方法.构造方法和自由块都是类中的成员 ...
- Java类及成员
Java类及成员 类 类是对一类事物的的描述,是抽象的概念上的定义:类是创建对象的模板: public class TestClass { public static void main(String ...
- hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化
hibernate映射文件??.hbm.xml配置映射元素详解--Hibernate映射类型 在从Hibernate的java的成员类型映射到SQL中的数据类型,其内映射方式它满足,SQL可以自己调制 ...
- 一道关于java 类初始化 成员初始化的笔试题的解析
代码如下: java笔试题public class Mapplication { private static int n; private static Mapplication m1 = new ...
- java类中成员的初始化顺序(一)
类被创建之后的成员的初始化顺序到底是怎么样的? 首先 不考虑继承 package com; public class DemoOne { /** * 关于类的初始化顺序 */ //不考虑继承结构的情况 ...
- Java类的成员之四:代码块.
3.2类的成员之四:代码块 ①初始化块(代码块)作用:对Java对象进行初始化 ②程序的执行顺序: ③一个类中初始化块若有修饰符,则只能被static修饰,称为静态代码块(static block ) ...
- Java——类的成员之五:内部类
3.6 类的成员之五:内部类 3.6.1 静态内部类 ①静态内部类可以等同看做静态变量. ②内部类重要的作用:可以访问外部类中私有的数据. ③静态内部类可以直接访问外部类的静态数据,无法直接访问成员. ...
- 【Java基础】Java类及成员和修饰符的关系
修饰符的分类 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 抽象修饰符:abstract 类的修饰符 权限修饰符:默认修饰符,public ...
- Java 类的成员初始化顺序
做个简单笔录,就当是重温下基础知识. 1.先看代码: package com.test; public class Test { public static void main(String[] ar ...
随机推荐
- 选择最适合你的Linux学习方法
我们知道Linux只是一个内核,现在的Linux操作系统底层都是用这个内核,包括Android手机,所以Linux操作系统其实是将Linux内核与应用软件做一个打包,我们称之为Linux发行版.现在比 ...
- QPS
你想建设一个能承受500万PV/每天的网站吗? 博客分类: 移动行业 PV 转自:http://elf8848.iteye.com/blog/967049 你想建设一个能承受500万PV/每天的网站 ...
- JS访问剪切板中的图片
google出来一个html2canvas,它利用canvas来渲染读取的DOM树,也就是说它只能截取document里的内容,如果要像qq截图那样,应该怎么做?用过百度的Ueditor编辑器的朋友都 ...
- 李明杰视频 SVN
李明杰视频 SVN 就10-12使用技术SVN 源代码会引发哪些问题? 无法后悔:做错一个操作 版本备份:费控件,费时间 版本混乱:因版本备份太多造成混乱 代码冲突:多人操作同一文件 强烈建议 使用源 ...
- POJ 1328 Radar Installation 贪心 难度:1
http://poj.org/problem?id=1328 思路: 1.肯定y大于d的情况下答案为-1,其他时候必定有非负整数解 2.x,y同时考虑是较为麻烦的,想办法消掉y,用d^2-y^2获得圆 ...
- 去除Sql Server中回车换行符
这里使用了,sql 函数.replace(string_expression , string_pattern , string_replacement), 第一个参数:要查找的字段. 第二个参数:要 ...
- C++-理解构造函数、析构函数执行顺序
先初始化序列中的函数调用,如果基类构造函数为非引用传递,则引起参数的拷贝构造 再: 先类内的成员构造函数(拷贝/默认),再类的构造函数:先基类,再派生类: 本文主要说明对象创建时构造函数的执行顺序,对 ...
- [Windows驱动]流媒体驱动开发
从Windows98开始,Windows流媒体驱动遵循Windows Driver Model(WDM)模型并使用Kernel Streaming(KS)组件.Kernel Streaming(KS) ...
- java基础-003
10.进程和线程 进程是执行者的应用程序,而线程是进程内部的一个执行序列.一个进程可以有多个线程.线程又叫轻量级进程. 创建线程的三种方式: I> 继承Thread类 II> 实现Runn ...
- 单例模式简单解析--Singleton 单例模式(懒汉方式和饿汉方式)
单例模式的概念: 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 关键点: 1)一个类只有一个实例 这是最基本 ...