目录

1. static:

很多时候将static直接翻译为静态,但是这个描述不够准确,static是用来定义类变量,也就是说被static定义的变量不属于这个类的某个实例。所以被static定义的成为类变量、类方法;反之为实例变量

需要注意的是,在静态方法中不能直接通过对象去调用,需要通过类去调用

123456789101112131415 public class NewClassTest {

public void jump(){

System.out.println("This is NewClassTest");

}

public void run(){
System.out.println("This is run");
jump();
} //static
public static void sFun(){
new NewClassTest().run(); //correct
run(); //error
}

}

2. 类在内存中,每一个类在创建在栈内存中,当创建一个对象的时候,将非类变量再堆内存中创建,而类变量是不会因为创建对象而在堆中重新创建

并且访问类变量不能用对象的方式,必须用类的方式!

3. 对象、引用和指针:

    Java中的变量都是引用,指针被封装了。当对象没有被引用时候就会被垃圾回收机制回收。也可以将对象赋值null,标记回收此对象。

4. 类名和文件名的关系

5. Java的set和get方法

5. 包的概念:

包的命名:

父## 包和子包之间的类关系:

import包:

特殊情况的引用

Java文件结构


目录

6.构造器

Java可以自定义构造,可以简单理解为C++的构造,如果定义了私有的构造,即不使用默认的无参构造,那么在创建对象的时候,默认的构造是非法的,如果需要多个构造,那么需要定义多个构造,形成构造的重载:



package aaa;

public class Study {

    private int num;
private String name; //这里既可以为public也可以为private,具体区别待理解
private Study(String name){
this.name = name;
} public static void main(String[] args) {
// TODO Auto-generated method stub
Study s = new Study("aaa"); //这里合法!
Study ss = new Study(); //这里会报错!
System.out.print(s.name);
} }

关于构造在的初始化过程:

在构造中调用构造:

package aaa;

public class Study {

    private int num;
private String name; //无参构造
public Study(){}; //一个参数的构造
private Study(String name){
this.name = name;
} //两个参数的构造
public Study(String name, int num){
this(name); //调用了一个参数的构造,用this
this.num = num;
} public static void main(String[] args) {
// TODO Auto-generated method stub
Study s = new Study("aaa"); //没有被其他构造再调用,只初始化自己,num默认初始化为0
System.out.println(s.name);
System.out.println(s.num); Study ss = new Study("bbb", 2); //在构造中调用了一个参数的构造
System.out.println(ss.name);
System.out.println(ss.num);
} }

7.继承

注意:Java是单继承,不同于C++,每个子类只有一个直接父类。关键字extends

修饰符 class SubClass extends SuperClass{
//类定义部分
}
      子类继承后获得父类的全部变量和方法,构造除外。
**但是可以间接继承多个父类**

方法的覆盖(Override):

super关键字

子类需要调用父类中被覆盖的实例方法,可以用Super关键字来调用,需要注意的是和this不能出现在static关键字修饰的方法中一样,super也不可以调用类方法

//在两个文件中定义类

//父类
public class Bird{
public int num = 1; public void fly(){
System.out.println("Bird can fly!");
}
} //子类
public class Drck extends Bird{
public int num = 2; public void fly(){
System.out.println("Drck can not fly!");
} public void accessBirdNum(){
System.out.println(super.num); //调用父类变量
} public void accessDrckNum(){
System.out.println(num);
}
}

需要注意的是有隐藏的情况,在父类和子类同名的情况下:

//父类
public class Bird{
public String fly = "Bird can fly";
}
//子类
public class Drck extends Bird{
//实际上父类的fly被这里隐藏了
private String fly = "Drck can not fly";
}
//打印
public class Study {
public static void main(String[] args) {
// TODO Auto-generated method stub
Drck dc = new Drck();
System.out.println(dc.fly); //这里编译不过,
System.out.println(((Bird)dc).fly); //向上转为父类
}
}

8.多态

//父类
public class Bird{
public String name = "Bird";
//父类独有的方法
public void birdTest(){
System.out.println("Bird fly");
}
//会被子类方法覆盖
public void test(){
System.out.println("父类的test");
}
} //子类
public class Drck extends Bird{
public String name = "Drck";
//子类独有的方法
public void drckTest(){
System.out.println("drck fly");
}
//覆盖了子类
public void test(){
System.out.println("子类的test");
}
} public class Study {
public static void main(String[] args) {
// TODO Auto-generated method stub
Bird bd = new Drck();
System.out.println(bd);
bd.birdTest(); //父类的方法
bd.test(); //子类的方法
//bd.drckTest(); //编译的类型是Bird,没有drckTest方法,编译报错
}
}

引用变量的强转

强转的规则:

1. 基本的数值类型

2. 有继承关系的两个类型之间

是否可以强制转换可以用instanceof来判断

子类和父类的封装

使用继承的前提:

9.类的初始化

10.Java增强的包装类

•自动装箱(AutoBoxing)和自动拆箱(AutoUnboxing)

Java中除了基本数据类型外,所有引用类型的变量都继承自Object,都可当做Object类型变量使用。基本数据类型在Java中通过特定的包装类实现:

public class Study {
public static void main(String[] args) {
Integer inObj = 2;
Float flObj = 2f;
Double dbObj = 2.0;
Byte byObj = 1;
Character chObj = 'c';
Boolean bObj = false;
Short shObj = 1;
//Object
Object ob = true; if (ob instanceof Boolean) {
bObj = (Boolean)ob;
}
}
}

自动装箱和拆箱的过程由Java完成,利用了向上转型的特性。不需要我们认为干预,但是要注意的是不能将错误的类型装箱和拆箱:将int和Float混用

String和其他类型的互转

### 基本类型转String用praseXXX(String s)或者构造XXX(String s)
### String转基本类型用s.valueOf()方法或者 + ""的方式

``Java

public class Study {

public static void main(String[] args) {

int num = 2;

float numf = 2.2f;

String snum = "123";

//String转换为基本类型,使用praseXXX(String s)

int num1 = Integer.parseInt(snum);

System.out.println("int num:" + num1);

//String转换为基本类型,使用构造XXX(String s)

float num2 = new Float(numf);

System.out.println("float num:" + num2);

//基本类型转换为String,使用String的方法s.valueOf()

String s = String.valueOf(numf);

System.out.println("String num:" + s);

//基本类型转换为String,使用+符号

String s1 = num + "";

System.out.println("String plus num:" + s1);

}//main

}



## toString方法

```Java
package aaa; //定义个类,并重写toString方法
public class Bird{
private int wing;
private int eye; //无参构造
public Bird(){
} //有参构造
public Bird(int wing, int eye){
this.wing = wing;
this.eye = eye;
} //省略getter和setter方法 //Override toString
public String toString(){
return "一只鸟有" + wing + "双翅膀" + eye + "双眼睛";
} }
//调用

public class Study {
public static void main(String[] args) {
Bird bd = new Bird(2,2);
System.out.print(bd);
}//main
}

equals方法

单例类

public class Singleton {
private static Singleton instance;
//将默认构造私有,方式重复创建对象
private Singleton(){
}
//通过开放的方法获取唯一的实例
public static Singleton getInstance(){
if (null != instance){
instance = new Singleton();
}
return instance;
}
}

6.面向对象 -类.md的更多相关文章

  1. Php面向对象 – 类常量

    Php面向对象 – 类常量 类常量:类中,保存执行周期内,不变的数据. 定义: constkeyword const 常量名 = 常量值 样例: class Student { public  $st ...

  2. C语言利用 void 类型指针实现面向对象类概念与抽象。

    不使用C++时,很多C语言新手可能认为C语言缺乏了面向对象和抽象性,事实上,C语言通过某种组合方式,可以间接性的实现面对对象和抽象. 不过多态和继承这种实现,就有点小麻烦,但是依然可以实现. 核心: ...

  3. Python学习(七)面向对象 ——类和实例

    Python 面向对象 —— 类和实例 类 虽然 Python 是解释性语言,但是它是面向对象的,能够进行对象编程.至于何为面向对象,在此就不详说了.面向对象程序设计本身就很值得深入学习,如要了解,请 ...

  4. php面向对象类中常用的魔术方法

    php面向对象类中常用的魔术方法   1.__construct():构造方法,当类被实例化new $class时被自动调用的方法,在类的继承中可以继承与覆盖该方法,例: //__construct( ...

  5. Java面向对象-类与对象

    Java面向对象-类与对象 类与对象的关系 我们通俗的举个例子,比如人类是一种类,张三这个人就是人类的具体的一个个体,也就是java中的对象:这就是一个类与对象的关系: 类的定义 下面看实例 类的创建 ...

  6. Python之面向对象类和对象

    Python之面向对象类和对象 定义一个类:class 定义类的语法: class Test(object): """ 类里定义一类事物共同的技能. 可以是变量,也可是函 ...

  7. C语言利用 void 类型指针实现面向对象类概念与抽象

    不使用C++时,很多C语言新手可能认为C语言缺乏了面向对象和抽象性,事实上,C语言通过某种组合方式,可以间接性的实现面对对象和抽象. 不过多态和继承这种实现,就有点小麻烦,但是依然可以实现. 核心: ...

  8. oopday01(面向对象-类&private&this)

    面向对象基本概述.封装 01_面向对象(面向对象思想概述) * A:面向过程思想概述    * 第一步    * 第二步 * B:面向对象思想概述    * 找对象(第一步,第二步) * C:举例   ...

  9. Java面向对象——类的成员

    Java面向对象——类的成员 摘要:本文主要介绍了类的常见成员. 属性 属性称为成员变量,一般来讲不用赋值,因为有默认值,另外显式赋值没有意义会导致所有由此类创建对象都是此值. 默认值 Boolean ...

随机推荐

  1. MySql 引擎

    存储引擎: 存储引擎就是指表的类型以及表在计算机上的存储方式 它处于MySQL体系架构中Server端底层,是底层物理结构的实现,用于将数据以各种不同的技术方式存储到文件或者内存中,不同的存储引擎具备 ...

  2. (转)利用WPF的ListView进行大数据量异步加载

    原文:http://www.cnblogs.com/scy251147/archive/2012/01/08/2305319.html 由于之前利用Winform的ListView进行大数据量加载的时 ...

  3. C#的两种类据类型:值类型和引用类型

    注:引用类型相等赋值是地址赋值,不是值赋值. 什么是值类型,什么是引用类型 概念:值类型直接存储其值,而引用类型存储对其值的引用.部署:托管堆上部署了所有引用类型. 引用类型:基类为Objcet 值类 ...

  4. solr 忽略大小写

    1.types标签下加入如下fieldType <fieldType name="str_lower" class="solr.TextField" so ...

  5. wordpress写文章添加gif图片变成静态图片的解决办法

    添加文章时gif只能静态,记得在添加时选择完整尺寸,不要压缩即可

  6. Java框架相关

    问题及答案来源自<Java程序员面试笔试宝典>第五章 Java Web 5.3 框架 11.什么是IoC? IoC:控制反转(Inverse of Control, IoC),有时候也被称 ...

  7. WPF 异常其他信息: “对类型“BaseControl.KImgButton”的构造函数执行符合指定的绑定约束的调用时引发了异常。”,行号为“38”,行位置为“22”。

    引发的异常:“System.Windows.Markup.XamlParseException”(位于 PresentationFramework.dll 中) 其他信息: “对类型“BaseCont ...

  8. C# WPF 文件复制,相对路径

    /// <summary> /// 下载/复制 /// </summary> /// <param name="sender"></par ...

  9. 安全测试5_服务端的安全漏洞(SQL注入、命令注入、文件操作类)

    前面大致讲解了下客户端的安全漏洞,现在来讲解下服务端的安全漏洞. 1.SQL注入(SQL Injection),是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库 ...

  10. Oracle递归查询父子兄弟节点

      1.查询某节点下所有后代节点(包括各级父节点) 1 // 查询id为101的所有后代节点,包含101在内的各级父节点 2 select t.* from SYS_ORG t start with ...