1.类的修饰符只能是:public,默认的。另外:final  ,abstract,(修饰符 (只有:public, 默认,)interface+类名 )。

2.在main函数中创建对象时,new哪个类的个无参构造就是调哪个类的无参构造,同时隐式调用该类父类的无参构造。

              new有参构造就会调有参构造,同时隐式调用该类父类的无参构造。

3.构造方法和普通方法都可以用四种修饰符来修饰:public,private,protected,默认的。//私有构造方法不能NEW

 抽象方法不能用 private ,final,static修饰

另外:还可以用 static,但是构造方法没有返回值。

父类构造方法和父类私有属性不能被子类继承,但是可以通过super被子类调用。 

  

eg:

public class Test {
public static int age;
protected Test(){
System.out.println("古道西风瘦马");
}
protected Test(int age){
this.age=age;
System.out.println("枯藤老树昏鸦");
}
public static void main(String[] args) {
Test t=new Test();
Test tt=new Test();
Test2 tt2=new Test2();
Test2 t2=new Test2(,);
/*
* 古道西风瘦马
* 枯藤老树昏鸦
* 枯藤老树昏鸦
* 断肠人在天涯
* 枯藤老树昏鸦
* 小桥流水人家
*/
}
}
class Test2 extends Test{
private int score;
public Test2(){
super();//相当于显示调用父类有参构造
System.out.println("断肠人在天涯");
} public Test2(int age,int score){
super();
this.score=score;
System.out.println("小桥流水人家");
} }

4.子类重写父类的方法,修饰符范围应该比父类大。

5.静态方法中不能使用super和this关键字,会报错。(静态方法从属于类,随着类的加载而产生比较早,而super和this都是从属于对象,随着对象的创建而生成比较晚,生成时间不同,所以static修饰的方法很可能调用错未创建的对象)

6.package包中有哪些包:

* java中常见的包: java.lang包之外的其他包下的类,使用时需要导包。
* java.lang包:java核心类库,String,System,Math... 该包下的类可以直接使用,无需导包。
* java.util包:工具类。 Arrays,Scanner...
* java.io包:i(input)/o(output)和java中流的输入和输出相关的类库。
* java.net包:网络编程相关的类库。
* java.sql包:与数据库操作相关的类库。
* java.text包:国际化或格式化输出相关的类库。
* java.awt包/javax.swing包:图形化界面相关的类库
*声明包:使用package关键字,必须放在该类的第一行。
*语法: package 包名; eg:cn.zzsxt.oop7;

7.java.lang.Object类中的方法:

8.toString() 返回该对象的字符串表示。如果使用System.out.println(stu);默认调用stu.toString()
* cn.zzsxt.oop6.Student@26ffd553==》
* cn.zzsxt.oop6.Student(包名.类名)+@+16进制表示的hashcode码
* toString()方法经常在子类中重写。

import java.util.Arrays;

public class TestToString {
public String name="kuangzhisen";
String []num={"saaaa","sssss","dddd"}; /*
@Override
public String toString() {
return "TestToString [num=" + Arrays.toString(num) + "]";
} */ public static void main(String[] args) {
int a;
TestToString t=new TestToString();
TestToString tt=new TestToString();
System.out.println(t);
System.out.println(tt);
/*
* cn.zzsxt.oop0610.TestToString@3294e4f4
* cn.zzsxt.oop0610.TestToString@4d43691d
*/ }
}

9.多态的好处:
A:提高了代码的维护性(继承保证)
B:提高了代码的扩展性(由多态保证)

多态的弊端:
不能使用子类的特有功能。

public class Polymo {
private int age;
private int score;
public void show(){
System.out.println("乐百惠");
}
public static void main(String[] args) {
Polymo p=new Polymo();
Polymo zz=new son();//向上转型,子类上升为父类
son ss=null;
ss=(son)zz; //向下转型,把向上转型过的父类再转换为子类
ss.show();
// System.out.println(ss.name); 向下转型后仍然无法调用子类中的私有属性
}
}
class son extends Polymo{
private String name="wangyangyang";
private int age=;
public void show(){
System.out.println("王阳阳!!!!!!!");
}
}

10.java中可以没有构造函数,其实在创建的对象过程中,系统默认添加一个无参构造。

11.this不能调用静态的属性!this是指当前对象,静态方法是通过类调用的方法,不需要实例化,既然不需要实例化,就没有当前对象,既然没有当前对象那怎么会有this。

12.值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。

       ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。       equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

        ==比较的是2个对象的地址,而equals比较的是2个对象的内容。显然,当equals为true时,==不一定为true。

13.hashCode()和equals()的关系:

  在向set集合中添加元素时,先调用hashCode()方法获取当前对象的hash码,根据对象的hash码与集合中对象的hash码进行比较,如果hash码相同,再调用equals()方法进行比较内容是否相同。

  如果hash码不同,将不再调用equals()方法、

  如果equals相同,hash码肯定相同;相反,如果hash码相同,equals结果不一定相同。

  如果,向set结合中添加对象时,想将内容相同的重复项去掉,需要重写hashCode()和equals()方法。

14.LinkedHashSet:哈希表+链表结构进行存储。(有序,添加顺序)

15.哈希表(散列表)

  Y=K(X)=X%7,X为hash码

 

java:LeakFilling(面向对象)的更多相关文章

  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. Practical Lessons from Predicting Clicks on Ads at Facebook (2014)论文阅读

    文章链接: https://quinonero.net/Publications/predicting-clicks-facebook.pdf abstract Facebook日活跃度7.5亿,活跃 ...

  2. Linux 性能优化笔记:软中断(转载)

    进程的不可中断状态是系统的一种保护机制,可以保证硬件的交互过程不被意外打断. 所以,短时间的不可中断状态是很正常的. 但是,当进程长时间都处于不可中断状态时,你就得当心了.这时,你可以使用 dstat ...

  3. mvn高级构建

    指定pom文件,打包指定的module,并且自动打包这个模块所依赖的其他模块. mvn clean install -f vmc-business-parent/pom.xml -pl vmc-sch ...

  4. head&tail命令

    1.tail tail命令用途是按照要求将指定的文件的最后部分输出到标准设备, 一般是终端,通俗来讲,就是把某个档案文件的最后几行显示到终端上, 如果该档案有更新,tail会自动刷新,确保你看到最新的 ...

  5. django之路由层(反向解析)总结

    表关系的建立方式 表与表之间的关系就三种 一对一 OneToOne(to='') # to后面可以跟字符串的表名 也可以直接跟变量名表名(该表名必须在上面提前定义出来) 一对多 ForeignKey( ...

  6. Python语法汇总

    如果你之前学过任何一门编程语言,因为每种语言的基础语法要做的事情其实基本是相同的,只是表示方式或某些地方稍稍不同,因此在学Python的时候将它与其它你已经掌握的编程语言对比着学,这样学起来更快,效果 ...

  7. [深度学习] 各种下载深度学习数据集方法(In python)

    一.使用urllib下载cifar-10数据集,并读取再存为图片(TensorFlow v1.14.0) # -*- coding:utf-8 -*- __author__ = 'Leo.Z' imp ...

  8. linux中的selinux到底是什么

    一文彻底明白linux中的selinux到底是什么 2018年06月29日 14:17:30 yanjun821126 阅读数 58877 标签: SElinux 更多 个人分类: Linux   一 ...

  9. Python web框架 Tornado异步非阻塞

    Python web框架 Tornado异步非阻塞   异步非阻塞 阻塞式:(适用于所有框架,Django,Flask,Tornado,Bottle) 一个请求到来未处理完成,后续一直等待 解决方案: ...

  10. [LOJ3109][TJOI2019]甲苯先生的线段树:DP

    分析 首先,请允许我 orz HN队长zsy.链接 我们发现树上的链有两种类,一类是直上直下的,一类不是直上直下的(废话).并且,如果我们确定了左侧和右侧的链的长度和整条链上所有节点的编号之和,那么这 ...