总是看到四种权限,这里做一个介绍:

最大权限是public,后面依次是protected,default,private

private修饰的只在本类可以使用

public是最大权限,可以跨包使用,不同包的子类和无关类都可以使用,可以修饰类,方法,成员变量

不写权限就是default默认权限:限于本包内使用

protected权限:跨包后的类如果有继承关系(子类),不能使用default修饰的,而可以使用protected修饰的,调用时候必须在子类的里面才可以调用父类的受保护权限,注意protected不能修饰类

日常开发用的只有:public、private

另外注意:

abstract不可以与static,private,final写在一起

关于代码块:

示例

public class Person {
private String name;
private int age;
public Person(String name,int age){
this.age = age;
this.name = name;
System.out.println("构造方法");
}
//构造代码块
{
System.out.println("构造方法代码块");
}
//静态代码块
static{
System.out.println("静态代码块");
}
}
//静态代码块,只执行一次
//构造代码块,每次创建对象都会执行,优先于构造方法
public class Test {
public static void main(String[] args) {
Person person1 = new Person("张三", 18);
Person person2 = new Person("李四", 18);
}
}
/*
输出:
静态代码块
构造方法代码块
构造方法
构造方法代码块
构造方法
*/

还有一些补充内容:

文档注释和生成jar包

随意写一个类

package demo;

/**
* @author dell
* @version 1.0
*/
public class Person {
/**
*
* @param a
* @param b
* @return function
*/
public int function(int a, int b){
return a+b;
}
}

利用eclipse,选择工程,右键export里面有选择Java,里面有Javadoc等文件,

选择后会生成一套网页,相当于说明书,可以查看相关内容

也可以选择java的其他选项,生成jar包等

导入jar包方式:

通常是在工程目录下新建一个lib文件夹,放入jar包,右键build path  -> add to build path,使用时候import就可以了

面向对象的补充:

1.类可以作为方法的参数传递,即方法的参数可以是一个对象,实质上是传递一个内存地址,在方法中进行对象的相关操作

2.和第一条类似,类也可以作为方法的返回值,即返回一个对象的引用

3.抽象类也可以作为方法的参数和返回值,区别在于:

抽象类没有对象,只能利用多态的特性传递(返回)抽象类的子类对象,注意接收返回值的时候类型必须是抽象类而不是子类

4.接口同样可以作为方法的参数和返回值:

接口也没有对象,必须传递接口的实现类对象,注意可以利用多态创建实现类对象也可以直接创建实现类对象,

同样,作为返回值的时候虽然传入的是实现类对象,但是接收的时候必须是接口类型

针对上面的补充内容写一个简单的案例来理解:

public abstract class Animal {
public abstract void eat();
public static Animal getInstance(){
return new Cat();
}
}
public class Cat extends Animal {
public void eat(){
System.out.println("猫在吃");
}
}
public class Test {
public static void main(String[] args) {
Animal a = Animal.getInstance();
a.eat();//输出:猫吃鱼
}
}

Java学习笔记16(面向对象九:补充内容)的更多相关文章

  1. 疯狂java学习笔记之面向对象(九) - 抽象和接口

    一.抽象(abstract): 1.抽象类: 使用abstract修饰的类就是抽象类; 相比于普通类抽象类增加了支持抽象方法的功能,但也丢失了创建实例的功能(抽象类中不能创建实例),其他普通类有的抽象 ...

  2. Java学习笔记之---面向对象

    Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...

  3. Android学习笔记(十九)——内容提供器

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整 ...

  4. Java学习笔记之面向对象、static关键字

    一周Java学习总结 今天就总结理清一下关于面向对象和面向过程的程序设计的一些不同特点,以及讲下static关键字. 面向对象 现在接触的Java是面向对象的,现在的程序开发几乎都是以面向对象为基础的 ...

  5. Java 学习笔记(4)——面向对象

    现在一般的语言都支持面向对象,而java更是将其做到很过分的地步,java是强制使用面向对象的写法,简单的写一个Hello Word都必须使用面向对象,这也是当初我很反感它的一点,当然现在也是很不喜欢 ...

  6. Java学习笔记(十)面向对象---接口

    理解 初期理解 可以认为接口是一个特殊的抽象类.当接口中的方法都是抽象的,那么该类可以通过接口的形式来表示. class用于定义类 interface用于定义接口 格式特点 接口中常见定义:常量,抽象 ...

  7. Java学习笔记二十九:一个Java面向对象的小练习

    一个Java面向对象的小练习 一:项目需求与解决思路: 学习了这么长时间的面向对象,我们只是对面向对象有了一个简单的认识,我们现在来做一个小练习,这个例子可以使大家更好的掌握面向对象的特性: 1.人类 ...

  8. Java学习笔记(十九)——Java 日志记录 AND log4j

    [前面的话] 学习的进度应该稍微在快一点. Java日志到了必须学习怎么使用的时候了,因为在项目中要进行使用.基础性文章,选择性阅读. [结构] java日志对调试,记录运行,问题定位都起到了很重要的 ...

  9. 【原】Java学习笔记019 - 面向对象

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 仔细想一想,Ani ...

随机推荐

  1. Python的招牌菜xmlrpc

    一.简单介绍 为了解决在系统的80port提供RPC的服务.而又不影响正在运行的WEB服务.人们想出了用HTTP协议传输RPC包的办法.对于差点儿是专门用于传输文本的HTTP协议.要在其上传输RPC封 ...

  2. IIS中遇到无法预览的问题(HTTP 错误 401.3 - Unauthorized 因为 Web server上此资源的訪问控制列表(ACL)配置或加密设置,您无权查看此文件夹或页面。)

    在IIS中  依次运行例如以下操作: 站点--编辑权限--共享(为了方便能够直接将分享对象设置为everyone)--安全(直接勾选 everyone )--应用--确定.

  3. License友好的前端组件合集

    在做Web开发过程中,不可避免的会用到各种UI组件.通常,我们并不会需要什么组件,都去自己开发的,网上有那么多好用的,我们为什么要自己造轮子呢?我通常只会在网上找不到合适的组件时,才会去自己开发一套. ...

  4. utf8、unicode与gbk

    中国人民通过对 ASCII 编码(对于英文字母8位)的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字. 汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK (汉字:两个字 ...

  5. iOS 常用到的宏#define

    //AppDelegate #define APPDELEGATE [(AppDelegate*)[UIApplication sharedApplication] delegate] //----- ...

  6. APP闪退问题

    1.iOS-中app启动闪退的原因 2.iOS开发-闪退问题-解决之前上架的 App 在 iOS 9 会闪退问题 3.iOS-应用闪退总结 4.iOS开发-捕获程序崩溃日志 5.iOS开发-应用崩溃日 ...

  7. MySQL datetime的更新,删除网上的一些老概念

    网上的老概念 第一点:是以前的MySQL的datetime的最小值是:'1000-01-01 00:00:00'(貌似),但是最新的MySQL测试datetime的最小值可以是:'0000-00-00 ...

  8. Xftp连接阿里云Linux,向Linux上传文件,Windows和Linux文件传输

    我之前是用SecureCRT连接阿里云Linux的,上传文件用的Alt+p快捷键,感觉不是很方便.后来朋友给我推荐了Xshell,感觉确实好用得很多. 传输文件用的是Xftp,今天在向我的个人网站发布 ...

  9. 724. Find Pivot Index

    Given an array of integers nums, write a method that returns the "pivot" index of this arr ...

  10. bzoj 3620: 似乎在梦中见过的样子

    Description "Madoka,不要相信 QB!"伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回 ...