第1部分 方法

1.1 方法基本概念

1) 方法:用于封装一段特定功能代码,尽可能一个方法至只实现一个基本功能,相当于C语言中的函数;

2) 方法可以多次调用;

3) 避免代码冗余,便于维护,便于团队合作;

4) 定义方法五要素:修饰词、返回值类型(也可没有void)、方法名、参数(有参数更灵活)、方法体

public static int sum (int a,int b) { }

修饰词 返回值类型 方法名 参数 方法体

5)方法可以嵌套调用

1.2 方法的重写

需要改父类才重写

.1.2.1

1)发生在父子类中,方法名相同,参数表相同,方法体不同

2)重写方法被调用时,看对象类型;子类重写会覆盖父类方法名和参数列表相同的方法,当然用super还是可以调用父类方法

1.2.2、 注意事项:

1) 两大:方法名和参数相同

2)两小:

2.1)子类的返回值类型小于或等于父类的

2.1.1)void和基本类型时,必须相同 ;

2.1.2)引用类型时小于或等于;java认为父类大,子类小

2.2)子类抛出的异常小于或等于父类的

3)一大:子类方法的访问权限要大于或等于父类

1.3 补充:

重写和重载的区别:

1)重写:一个类中,方法名相同,参数列表相同,方法体不同;遵循“运行期”绑定,根据对象调用方法

2)重载:一个类中,方法名相同,参数列表不同,方法体不同;遵循“编译期”绑定,根据引用类型绑定方法

第2部分 类和对象

对象:真实存在的单个个体 如 张三、李四、王五 , 门口停的宝马;

类:类别/类别,一类个体 如 人,车;

Java类中可以包含所有对象都包含的属性、行为

类是一种数据类型

只能包含:

1)描述对象所共有的特征:------变量

属性-----静的

2)对象所共有的行为:----------方法

行为-----动的

一个类可以创建多个对象

类是对象的模板,对象是类的实例

第3部分 重载

重载就跟付款一样,根据付款方式不同即参数不同,调用不同方法(标签一致的)。

System.out.println(Sting a){};

System.out.println(int b){};

1、在同一个类中,方法名相同, 参数不同

2、编译器在编译时自动根据方法 的签名绑定调用方法

第4部分 构造方法

1、给成员变量赋初值

2、与类同名,没有返回值,也不用写void

3、再创建(new)对象时自动调用

4、若自己不写编译器会有默认无参构造,自己写了不再提供

5、构造可以重载,所以可以自己写有参和无参构造

第5部分 this

this:指代当前对象,哪个调用指的就是哪个对象

方法中访问成员变量之前默认都有个this

this 的用法

1) this.成员变量---------------访问成员变量

2) this.方法名()------------访问方法,后期基本用不到

3) this()----------------------调用构造方法,多个构造,构造建相互嵌套调用

补充:

方法里是局部变量

类里方法外是成员变量

引用类型里面装的是地址,根据地址找指向的对象

第6部分  内存管理

6.1堆:

1.1)存储使用new关键字创建的对象(包括成员变量)

1.2) 成员变量生命周期:创建对象存在堆中,对象呗GC回收就结束了

1.3)GC(垃圾回收器)不定时到堆中查看,看到垃圾(没有任何引用所指向的对象)自动回收,回收过程是透明的,并不一定看到垃圾就回收,可以调用System.gc()建议快一点回收

1.4)内存泄漏:不再使用的对象还没有被及时回收(有指向但你不用,可能会导致奔溃),当对象不再使用时应及时将引用设置为null。

6.2 栈:

2.1)用于存储正在调用方法中的所有局部变量(包含参数)

2.2)调用方法时在栈中为该方法分配一块对应的栈帧,栈帧中包含所有的局部变量(包括参数),方法调用结束时,栈帧消失,局部变量一并消失

2.3)局部变量周期:调用方法时存在,方法调用结束时与栈帧一并消失

成员变量:类中,方法外;有默认值

局部变量:方法中,没有默认值

6.3  方法区

3.1) 用于存储.class字节码文件(包括方法)

3.2) 方法只存储一次(多次调用方法用this区分),通过this区分具体是那个引用

第7部分 继承

7.1 继承 和泛化一个意思

程序中继承:代码不用自己写,也能用

1)目的:避免代码重复,有利于代码复用

2)通过extends实现继承

3)父类:放所有子类所共有的属性和行为

子类:放特有的属性和行为

4.)子类继承父类后,子类具有:子类+父类,

5)一个父类可以有多个子类,

一个子类只有一个父类

单一继承

6)继承具有传递性

7)java规定:构造子类之前必须先构造父类方法;子类中如没自己调,则默认调用父类无参构造方法

7.2 super

super()调用父类方法必须位于子类构造的第一句

super:指向当前对象的父类对象,和this类似

1)super.成员变量名-------------------------------访问父类的成员变量

2)super.方法名()------------------------------调用父类的方法

3)super()-----------------------------------------调用父类的构造方法

7.3 向上造型

1) 父类型的引用指向子类型的对象

2) 能点出来什么,看引用的类型

Animal o1 = new animal();

Tiger o2 = new Tiger();

Animal o3 = new Tiger(); //一个老虎对象是动物类型 ,向上造型

Tiger o4 = new Animal(); //错误

class Animal{

}

class Tiger extends Animal{

}

父类可以提供一个公共类型接口,跟接口可以联系起来。

第8部分 package、import、访问控制修饰符、static和final

8.1 package

1)避免类的命名冲突

2)包名有层次结构

建议:域名反写.项目名称.模块名称.类名

cn.tedu.manager.stumanager.Student

3) 建议:包名所有字母都小写

4) 类的完全限定名:包名.类名

8.2  import

1) 作用:声明类/引入类

2) 同包中的类可以直接访问

不同包中的类:用import.包名.类名

import.java.util.Scanner;

Scanner s = new Scanner(System.in);

int age = s.nextInt();

s.close;

8.3 访问控制修饰符

数据私有化(private),行为公开化(public)

1)public:公开的,任何类

2)private:私有的,本类

3)protected:受保护的,本类、子类、同包类

4)默认的:什么也不写,本类、同包类

类的访问修饰:public和默认的

类成员的访问修饰:如上4种都可以

protected和private可以修饰内部类

java建议所有都加访问权限

8.4 static:静态的

8.4.1 静态变量

1.1)成员变量:

1.1.1)实例变量:1)属于对象的,存在堆中;

2)有几个对象就有几个实例变量;

3)必须通过 对象名.变量名 访问

1.1.2)静态变量:1)用static修饰,属于类的,只有一个,存在方法区中;

2)常常建议通过 类名.变量名 访问;不建议用引用来访问

3)何时使用:所有对象的数据都一样的时候使用,如做班级系统中学生的班级,银行系统中的利率

8.4.2 静态方法

1)用static修饰,属于类的,只有一个,存在方法区中;

2)常常建议通过 类名.变量名 访问;不建议用引用来访问

3) 没有隐式this传递,在静态方法中不能直接访问实例成员,静态方法中只能直接访问静态的

class Aoo{

int a;

static int b;

void show(){ //实例方法

a++;

b++; //Aoo.b++;

}

static void test(){ //静态方法中只能直接访问静态的

a++; //编译错误 ,没有this,在静态方法中不能直接访问实例成员

b++;

}

}

8.4.3 静态块:略

8.5 final

第9部分 抽象

抽象 不完整

1)抽象方法:由abstract修饰,只有方法的定义,没有方法体即不需要“{}”

2)抽象类:由abstract修饰,可以包含抽象方法,也可以包含普通方法

3)包含抽象方法的类,必须是抽象类;类中没有抽象方法,也可以将类声明为抽象类

4)抽象类不能被实例化 Shape s = new Shape();//错误

5)抽象类一般需要被继承:

5.1)子类也声明为抽象类

5.2)子类重写抽象类中所有抽象方法---首选

6)抽象类的意义:

6.1)封装子类公用的成员,为子类提供一个公共的类型

6.2)定义抽象方法,由子类来做不同的实现,但入口(方法名)是一样的

第10部分 接口

//接口声明
[可见度] interface 接口名称 [extends 其他的接口名名] {
// 声明变量
// 抽象方法
} //实例
/* 文件名 : Animal.java */
interface Animal {
public void eat();
public void run();
} /*接口实现:Implements关键字放在class声明后面。*/ //实例
/* 文件名 : Dog.java */
public class Dog implements Animal{ public void eat(){
System.out.println("Dog eats");
} public void run(){
System.out.println("Dog run");
} public int noOfLegs(){
return 0;
} public static void main(String args[]){
Dog m = new Dog();
m.eat();
m.run();
}
}

只要遵守了USB规范,就能将设备插入到电脑上

只要遵守了国家盖楼房的标准,这个楼就能卖

只要遵守了这个规范,就能干某件事

1.接口就是一个标准、一个规范

2.接口中只能包含常量和抽象方法

3.接口不能被实例化

接口 引用 = new 实现类(); //向上造型

4.类实现接口,必须将所有抽象方法都实现

5.类可以实现多个接口,用逗号分隔

若类又继承父类又实现接口,需先继承后实现

6.接口与接口之间可以继承

Java部分概念理解的更多相关文章

  1. JAVA的概念理解:JavaSE、JavaEE、JavaME、jdk、jre、ide

    JavaSE是Java Standard Edtion的缩写,译成中文就是Java标准版,也是Java的核心.无论是 JavaEE(Java企业版)还是JavaME(Java微型版)都是以JavaSE ...

  2. 加深理解Java异常概念并熟记5个最常见的运行时异常

    加深理解Java异常概念并熟记5个最常见的运行时异常 说明Error与Exception的联系和区别有哪些? 列举最常见的5个运用时异常. 1.Error和Exception的联系和区别: Error ...

  3. Java基础之理解Annotation(与@有关,即是注释)

    Java基础之理解Annotation 一.概念 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata) ...

  4. Java 集合深入理解(4):List<E> 接口

    点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 蓝瘦!香菇! 连着加班几天,醉了.学学 List 放松下! 在 Java 集合深入理解:Collection 中我们熟悉了 ...

  5. 大数据核心知识点:Hbase、Spark、Hive、MapReduce概念理解,特点及机制

    今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发.面试官问了他10个问题,主要集中在Hbase.Spark.Hive和MapReduce上,基础概念.特点.应用 ...

  6. Java多线程概念简介 多线程中篇(一)

    Java的线程与操作系统的线程   在线程的相关介绍中,有讲到“线程的实现”分为三种:内核支持,用户级以及两者混合.(这只是一种简要的分类) Java线程在JDK1.2之前,是用户线程实现的 而在JD ...

  7. SpringIOC的概念理解、构造器注入、setter注入、p命名空间注入、IOC容器介绍与比较

    1.IOC概念理解 IOC(Inversion of Control)即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象 ...

  8. Java六大必须理解的问题

    Java六大必须理解的问题 对于这个系列里的问题,每个学Java的人都应该搞懂.当然,如果只是学Java玩玩就无所谓了.如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列.内容 ...

  9. java提高篇-----理解java的三大特性之封装

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

随机推荐

  1. 如何解决代码中if…else 过多的问题

    前言 if...else 是所有高级编程语言都有的必备功能.但现实中的代码往往存在着过多的 if...else.虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性.可维护 ...

  2. python之sqlalchemy的使用

    准备数据 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column from sqla ...

  3. Maven pom.xml中的元素modules、parent、properties以及import

    前言 项目中用到了maven,而且用到的内容不像利用maven/eclipse搭建ssm(spring+spring mvc+mybatis)用的那么简单:maven的核心是pom.xml,那么我就它 ...

  4. TortoiseGit之配置密钥

    TortoiseGit 使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥.使用命令ssh-keygen -C "邮箱地址" -t rsa产生的密钥在Tortoi ...

  5. 18 python 初学(time、random 模块)

    # _author: lily # _date: 2019/1/13 import time import datetime print(help(time)) # print(time.time() ...

  6. 学号 20175329 2018-2019-3《Java程序设计》第八周学习总结

    学号 20175329 2018-2019-3<Java程序设计>第八周学习总结 教材学习内容总结 第十五章 泛型 可以使用"class 名称"声明一个类,为了和普通的 ...

  7. 解决 Intellij IDEA Cannot Resolve Symbol ‘XXX’ 问题

    1.java类报错 https://blog.csdn.net/qq_32040767/article/details/77096680 2.类对应的依赖没有加载进来.编译器自身的设置和缓存问题类. ...

  8. Raft与MongoDB复制集协议比较

    在一文搞懂raft算法一文中,从raft论文出发,详细介绍了raft的工作流程以及对特殊情况的处理.但算法.协议这种偏抽象的东西,仅仅看论文还是比较难以掌握的,需要看看在工业界的具体实现.本文关注Mo ...

  9. Nginx(三)------nginx 反向代理

    Nginx 服务器的反向代理服务是其最常用的重要功能,由反向代理服务也可以衍生出很多与此相关的 Nginx 服务器重要功能,比如后面会介绍的负载均衡.本篇博客我们会先介绍 Nginx 的反向代理,当然 ...

  10. iOS开发基础篇-Button基础

    一.简单介绍  UIButton 的功能:响应用户操作.显示文字.显示图片.调整内部图片和文字的位置. 二. UIButton 的状态  UIControlStateNormal :普通状态,为默认情 ...